6

メイン アクティビティの onKeyDown() を KEYCODE_BACK で呼び出そうとしているので、自分で「戻る」ボタンを押したかのように動作します。次のコードを使用してそれを行います。

   KeyEvent goBackDown = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK,0,0);
    goBackDown.dispatch(activity);
    SystemClock.sleep(50);  // as if human pressed the key
    KeyEvent goBackUp = new KeyEvent(0,0,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_BACK,0,0);
    goBackUp.dispatch(activity);

私のアクティビティの onKeyDown() は現在、次の呼び出しのみを行っています。

return super.onKeyDown(keyCode, event);

ただし、実際の[戻る] ボタンとは異なり、「偽の」コードが呼び出されると、アクティビティは非表示になりません。

なんで?

4

3 に答える 3

12

使用する

dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK));

http://developer.android.com/reference/android/view/View.html#dispatchKeyEvent%28android.view.KeyEvent%29

于 2011-04-22T02:03:53.680 に答える
3

Aleadam メソッドは、私の Android 4.1.2 では機能しません。だから私は回避策を書きます:

public void dispachBackKey() {
    dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
    dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
}
于 2013-02-15T09:43:32.590 に答える
2

これを使ってみてください

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        //....
    }
    return true;
}
于 2011-04-22T01:37:06.490 に答える