1

A、B、C、Dの4つのアクティビティがあります。AがBを起動し、BがCを起動し、CがDを起動します。CがDを起動しているときに、状況に応じてアクティビティBを破棄します(そのロジックは残りますアクティビティC)Dから戻ると、D->C->Aパスをたどります。だから私はCからアクティビティBを破壊したいのです。どうすればそれは可能ですか?

4

5 に答える 5

3

アクティビティCを呼び出すときにアクティビティBを終了するのは、ロジックによって異なります。例えば

if(true){
Intent in = new Intent(B.this,c.class);
startActivity(c);
}
else
{
Intent in = new Intent(B.this,c.class);
startActivity(c);
finish();
}
于 2012-05-07T11:11:45.703 に答える
1

finishActivity(requestCode);

この方法はあなたを助けるかもしれません。

何をすべきかは、BからのいくつかのリクエストコードでアクティビティCを開始し、それに応じてこのリクエストコードでアクティビティを終了することです

于 2012-05-07T09:56:43.520 に答える
1

必要なロジックに応じて、Cから戻るときfinish();にアクティビティB を呼び出すだけです。onActivityResult

于 2012-05-07T09:58:29.030 に答える
0

できることは、各クラスに放送を登録して、送信放送を終了してその活動を終了したいときはいつでもできることだと思います。

        // REGISTER IN ONCREATE
        BroadcastReceiver form_filled = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String received_action = intent.getAction();

                if (received_action.equals("finish_a")) {
                    finish();
                }
            }
        };
        registerReceiver(form_filled, new IntentFilter("finish_a"));

        // THIS YOU HAVE TO DO WHEN YOU WANT TO FINISH
        Intent temp_intent = new Intent();
        temp_intent.setAction("finish_a");
        sendBroadcast(temp_intent);
于 2012-05-07T10:02:15.437 に答える
0

では、startActivityForResult(in、5);を呼び出すことができます。アクティビティCを開始し、アクティビティBにオーバーライドメソッドを実装します。

 @Override 
   protected void onActivityResult(int requestCode, int resultCode, Intent intent)       {                
super.onActivityResult(requestCode, resultCode, intent); 
    if(resultCode==0)
    { 
      finish(); 
    }
    else
   {

    } 
    }

アクティビティDを次のように呼び出す場合は、アクティビティに結果コードを設定します。

Intent backintent = getIntent(); 
  setResult(0); 
  Intent in = new Intent(C.this,D.class); 
  startActivity(in);

それでおしまい....

于 2012-05-10T10:03:47.233 に答える