2011-08-28 15 views
4

我正在製作一個該程序正在進入另一項活動中以獲取一些數據,然後通過意向將數據返回給我的主要活動。我目前的代碼確實打開了一個新的活動,它獲取併發送數據,但在完成()調用時似乎'重新啓動'我的主要活動。正在完成一項活動/ Intent

問題:如何阻止我的第二個活動重新啓動我的主要活動?

主要活動:

Intent intent = new Intent(AndroidVideoPlayer.this, FileChooser.class); 
intent.putExtra("dir", 1); 
startActivityForResult(intent, requestCode); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode); 
    // TODO Auto-generated method stub 

    myPath = data.getStringExtra("stringPath"); 
    textEmpty.setText(myPath); 
    myUri = Uri.parse(myPath);  
    mp = MediaPlayer.create(this, myUri); 
} 

次要活動:

Intent intent = new Intent(FileChooser.this,AndroidVideoPlayer.class); 
intent.putExtra("stringPath",intentPath1); 
setResult(1,intent); 
finish(); // <--- does close activity, but restarts main activity 
+0

當你完成一個活動想要回到以前的活動結果,不要創建新的意圖,你應該調用getIntent; Intent intent = getIntent();設置結果,因爲你做了,並完成 –

回答

3

這就是它是如何工作的。您需要重寫主要活動的onActivityResult方法以從意圖獲取stringPath。

+0

我的錯誤我現在編輯了這個問題 – Jonno

+0

@Jon所以你說,onActivityResult從來沒有被稱爲? –

+0

要添加到Konstantin的答案,請參閱此處的另一個示例: http://stackoverflow.com/questions/1124548/how-to-pass-the-values-from-one-activity-to-previous-activity – gmjordan

0

好的。您似乎在onActivityResult定義中缺少這一行。

super.onActivityResult(requestCode,resultCode,data);

+0

我想要它返回到上一個活動,但它似乎重新啓動活動,而不是回到它,因爲我的所有界面都被重置。 – Jonno

0

看來您的活動似乎正在重新創建。嘗試覆蓋onSaveInstanceState並在onCreate上使用savedInstanceState。它應該工作。