2011-08-28 91 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。它应该工作。