3

AB と C の 3 つのアクティビティがあり、そのうち B はTab Activityです。アクティビティ A が最初に起動され、A から B が起動されます。このコードを使用して B が起動されると、アクティビティ A が終了します。

public void onStop() {
   super.onStop();
   this.finish();
}

Bで戻るキーが押されたときにActivity Cを起動したいと思います。

このコードを使用してバックキーをオーバーライドしようとしました

@Override 
public void onBackPressed() { this.getParent().onBackPressed();
}

子アクティビティの起動中に親アクティビティが終了するため、これは役に立ちません。戻るキーを押すと実際に何が起こるかというと、アクティビティが終了してホーム画面に移動します。

バックキーをオーバーライドしてインテントを設定してみました

@Override
public void onBackPressed() {
    Intent backIntent = new Intent();
    backIntent.setClass(this, main.class);
    startActivity(backIntent);
}

これも私を助けません。この問題の解決策として考えられるのは、戻るキーが押されたときにアクティビティ C を起動するにはどうすればよいですか?

4

3 に答える 3

5

まず、アクティビティ A が停止したときにアクティビティ A を終了しないでください。これは、アクティビティ B を開始するときにアクティビティを終了する必要があるのではなく、完全に間違ったアプローチです。

例えば

Intent i = new Intent(this, B.class);
startActivity(i);
finish();

ユーザーが戻るボタンを押したときにアクティビティ C を開始したいので、以下のコードを使用します。

@Override
public void onBackPressed() {
    Intent backIntent = new Intent(this, C.class);
    startActivity(backIntent);
    super.onBackPressed();
}
于 2012-05-04T04:39:02.013 に答える
1

onKeyDown をオーバーライドする必要があります

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == event.KEYCODE_BACK)
    {
        //Do your code here
    }
    return super.onKeyDown(keyCode, event);
}
}

これは、ユーザーがデバイスのハード バック ボタンを押したときに呼び出されます。

次のアクティビティに移動するには: StartActivity(new Intent(getApplicationContext(),main.class));

于 2012-05-04T04:31:48.667 に答える
0

以下のメソッドをオーバーライドし、イベントをインポートします.....

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
// TODO Auto-generated method stub

   if (keyCode == event.KEYCODE_BACK)
   {
      //Write your intent or other code here
   }
   return super.onKeyDown(keyCode, event);
}
于 2013-12-23T05:52:02.407 に答える