2013-07-11 70 views
0

我有三個活動,ActivityA,ActivityB和ActivityC。由於代碼是今天,ActivityA將啓動ActivityB使用startActivityForResult()並將從ActivityB接收返回代碼。沒問題。startActivityForResult並替換子活動

我有另一個Android活動ActivityC,它代表生成ActivityA返回碼的一種替代方法。

我的問題是這樣的:

是否有可能ActivityB以這樣的方式,當ActivityC返回ActivityA的onActivityResult()方法被調用創建ActivityC?

我問,因爲我記得在一些Android項目在一年前這樣做,但我不記得是哪一個和谷歌並沒有給我任何答案。

回答

1

我創建了3個活動。活動一個開始的活動B的結果,並依次活動B簡單地開始活動C和自我調用finish()。活動C在啓動後,將結果設置爲任何想要的自動完成。活動A中的onActivityResult被調用,所以我相信答案是YES,它可以完成。

這裏是我的樣品活動 活動A:

public class MainTestActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_test); 

     new Timer().schedule(new TimerTask() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       Intent in = new Intent(MainTestActivity.this, TestActivityB.class); 
       startActivityForResult(in, 101); 
      } 
     }, 2000); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_test, menu); 
     return true; 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     Toast.makeText(this, "Got Intent", Toast.LENGTH_SHORT).show(); 
    } 

} 

活性B:

public class TestActivityB extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_test); 

     new Timer().schedule(new TimerTask() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       Intent in = new Intent(TestActivityB.this, TestActivityC.class); 
       startActivity(in); 
       finish(); 
      } 
     }, 2000); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_test, menu); 
     return true; 
    } 

} 

活性C:

public class TestActivityC extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_test); 

     new Timer().schedule(new TimerTask() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       setResult(101); 
       finish(); 
      } 
     }, 2000); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main_test, menu); 
     return true; 
    } 

} 
+1

我甚至在Activity B中評論過'finish()'。當我通過按下後退按鈕銷燬活動B時,活動A能夠顯示吐司。 – Rajeev

+0

不是我想要做的,但它確實有效。很好的回答,謝謝。 –

相關問題