2012-05-07 9 views
0

私はA、B、C、Dの4つのアクティビティを持っています。B、BはCを起動し、CはCを起動します。CがDを起動すると、状況に応じてBを破棄したい私がDから戻ったときに、D→C→Aの経路に従うように、活動C)にとどまる。だから、私はCから活動Bを破壊したいと思っています。それはどのように可能ですか?アクティビティで以前のアクティビティを破棄するにはどうすればよいですか?

+0

....これだけ

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

様活性Dを呼び出しているときのアクティビティでのResultCodeを設定しますあなたはあなたの答え[ここ](http://stackoverflow.com/questions/9972097/activity-lifecycle-issues)を得ることができます! –

+0

アクティビティBからCへの参照を取り、ref.finish()を呼び出します。ここで、refはBアクティビティへの参照です。 – Akram

答えて

2

終了アクティビティ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(); 
} 
+0

私はBからBを仕上げるのではなく、CからDを呼び出すときにBを完成させたい。 B自体からのBの終了は、初心者の質問でさえありません。 –

+1

これで、startActivityForResult(in、5)を呼び出すことができます。アクティビティCを開始し、@OverrideのようなアクティビティBでオーバーライドメソッドを実装する protected void onActivityResult(int requestCode、int resultCode、Intent intent) {super.onActivityResult(requestCode、resultCode、intent); if(resultCode == 0){finish(); } else {} } Activity DをIntent backintent = getIntent();のように呼び出すときに、resultcodeをActivityに設定します。 setResult(0); 意図=新しい意図(C.this、D.class); startActivity(in); それはそうです –

1

finishActivity(requestCode);

この方法は...何をすることはBからいくつかの要求コードで活動Cを開始...し、それに応じて簡単に呼び出すこの要求コード

1

での活動を終えている

あなたを助けるかもしれません活動finish(); BのonActivityResultあなたは

0

をしたいのロジックに応じて、Cから復帰したときに、私はあなたが何ができるかと思いますが、あなたがをregことができるということですあなたがsendbroadcastを終え、その活動を終わらせたいときはいつでも、各クラスの放送をisterします。

 // 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); 
0

[OK]を、あなたは(5、中)startActivityForResultを呼び出すことができます。活動C.を開始し、

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

    } 
    } 

様活性Bでオーバーライドメソッドを実装し、あなたが

関連する問題