目前我是在onclick里
构造keyEvent ,再人为调用 onkeydown事件,代码如下:
if(...)
{
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
this.onKeyDown(KeyEvent.KEYCODE_BACK, event);
}
可惜没有达到回退的效果 :(
有朋友有解决办法吗?
给你一个最简单的方法 override父类onBackPressed(),在按钮事件中调用此方法即可
[code="java"]
private void sendKeyEvent(String event) {
int eventCode = Integer.parseInt(event);
long now = SystemClock.uptimeMillis();
Log.i("SendKeyEvent", event);
try {
KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, eventCode, 0);
KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, eventCode, 0);
(IWindowManager.Stub.asInterface(ServiceManager.getService("window"))).injectKeyEvent(
down, true);
(IWindowManager.Stub.asInterface(ServiceManager.getService("window"))).injectKeyEvent(
up, true);
} catch (RemoteException e) {
Log.i("Input", "DeadOjbectException");
}
}
[/code]
覆盖Activity的onKeyDown方法:
[code="java"]
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
if (doSomething()) { // 后退时做的事情
setResult(RESULT_OK);
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
[/code]