19

A と B の 2 つのアクティビティがあります。A のボタンをクリックすると、B が表示されます。B のボタンをクリックすると、A に戻ります。finish() メソッドの後に overridePendingTransition メソッドを設定しました。正常に動作します。ただし、現在のアクティビティが B の場合、その時点でデバイスのデフォルトの戻るボタンをクリックします。アクティビティ A を示す右から左への遷移を示しています。

デバイスでそのデフォルトのバックキーを聞くにはどうすればよいですか?

編集:

Log.v(TAG, "back pressed");
finish();
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);
4

5 に答える 5

45
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

次のリンクは、バック キー イベントを処理する方法に関する詳細な説明であり、Android 開発者自身によって書かれています。

戻るキーの使用

于 2010-04-07T11:58:16.503 に答える
29

Android 2.0 以降では、Activity クラスに特定のメソッドがあります。

@Override  
public void onBackPressed() {
    super.onBackPressed();   
    // Do extra stuff here
}
于 2010-04-07T12:19:40.890 に答える
2
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK){
        //Do stuff
    }

    return super.onKeyDown(keyCode, event);
}
于 2010-04-07T11:50:14.163 に答える
0

バックキーの詳細については、こちらをご覧ください:http: //android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

于 2010-04-07T14:13:40.770 に答える
0

このコードは、メディア プレーヤーを使用したアクティビティで使用します。ユーザーが戻るボタンを押したときに再生を停止する必要がありましたが、前のアクティビティに戻ることができました。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        try{
            mp.stop(); //this line stops the player
            return super.onKeyDown(keyCode, event);//this line does the rest 
        }
        catch(IllegalStateException e){
            e.printStackTrace();
        }
        return true;
    }

    return super.onKeyDown(keyCode, event); //handles other keys
}
于 2010-07-18T15:57:14.013 に答える