android 有办法通过程序里的button oncliick提供键盘上menu back键效果吗?

目前我是在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]