一些类的信息:
public class Maze3DActivity extends Activity;
class GLGameView extends GLSurfaceView;
其中glgameView 是 Maze3DActivity 调用的一个View。
当然Maze3DActivity 还包括其他的View
问题描述:
在glgameView中重写了 OnkeyDown()方法。但是
情形1:当只是触摸屏幕或者无任何操作,紧接着按虚拟机上的back键 就会直接终止整个程序 。
情形2:如果按了虚拟机上的键盘或者物理键盘,接着按back键,竟然能够实现指定的功能,也就是说事件可以捕获。重写的代码:
public onKeyDown()
case KeyEvent.KEYCODE_BACK: // 如果按下返回键
if(event.getRepeatCount() == 0) {
event.startTracking();
return true;
}@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
Log.i("BACK", "DISPATCHkEYeVENT");
return super.dispatchKeyEvent(event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
&& !event.isCanceled()) {
activity.hd.sendEmptyMessage(GAME_MENU);
return true;
}
return super.onKeyUp(keyCode, event);
}补充说明:
在 情形1 下onkeydown、onkeyup,dispatchKeyEvent 这几个方法都没有进入。我尝试着在activity中重写onKeyDown()的方法,不过依然是无法捕获glgameView 中back 事件。 于是我又在activity中重写了onBackPressed()方法,这个倒是可以捕获任何一种情形的事件,但是这个方法一个参数都没有,我根本就不知道是从哪个view中按back键的。
public class Maze3DActivity extends Activity;
class GLGameView extends GLSurfaceView;
其中glgameView 是 Maze3DActivity 调用的一个View。
当然Maze3DActivity 还包括其他的View
问题描述:
在glgameView中重写了 OnkeyDown()方法。但是
情形1:当只是触摸屏幕或者无任何操作,紧接着按虚拟机上的back键 就会直接终止整个程序 。
情形2:如果按了虚拟机上的键盘或者物理键盘,接着按back键,竟然能够实现指定的功能,也就是说事件可以捕获。重写的代码:
public onKeyDown()
case KeyEvent.KEYCODE_BACK: // 如果按下返回键
if(event.getRepeatCount() == 0) {
event.startTracking();
return true;
}@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
Log.i("BACK", "DISPATCHkEYeVENT");
return super.dispatchKeyEvent(event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
&& !event.isCanceled()) {
activity.hd.sendEmptyMessage(GAME_MENU);
return true;
}
return super.onKeyUp(keyCode, event);
}补充说明:
在 情形1 下onkeydown、onkeyup,dispatchKeyEvent 这几个方法都没有进入。我尝试着在activity中重写onKeyDown()的方法,不过依然是无法捕获glgameView 中back 事件。 于是我又在activity中重写了onBackPressed()方法,这个倒是可以捕获任何一种情形的事件,但是这个方法一个参数都没有,我根本就不知道是从哪个view中按back键的。
解决方案 »
- 自定义控件问题: 继承自View的自定义控件在Layout配置文件里属性引不出来
- 想传入参数,在什么地方传递,如何保存?
- 进来谈下自己的android开发心得
- 怎么让一个Spinner保存上次选择的结果啊?
- android源码导入eclipse,framework层如果是通过实现aidl接口的函数无法实现单步调试
- 偶的神啊,这版啥时候开的啊,都不给个通知啊
- 求教:ScrollView 嵌套 ListView 导致getView 重复多次
- 如何计算TextView中能显示的最大字符数目?
- RelativeLayout属性:
- Android中Fatal signal 11 (SIGSEGV) at 0x6df6d7bf (code=2), thread 31535
- 关于Android英文下数字格式问题
- 如何在待机的情况下返回wifi的scanresult
在你的Activity
public onKeyDown()
case KeyEvent.KEYCODE_BACK: // 如果按下返回键
WhichView.OnBack();//这里添加想监听回退键的View
return true;
}