【问题标题】:Finishing an activity / Intent完成一项活动/意图
【发布时间】:2011-08-28 02:58:59
【问题描述】:

我正在制作一个程序,该程序将进入另一个活动以获取一些数据,然后通过意图将数据返回到我的主要活动。我目前拥有的代码确实打开了一个新活动,它获取并发送数据,但似乎在调用 finish() 时“重新启动”了我的主要活动。

问题:如何停止我的第二个活动重新开始我的主要活动?

主要活动:

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

【问题讨论】:

  • 当你完成一个活动想要返回上一个活动的结果,不要创建新的意图,你应该调用getIntent;意图意图 = getIntent();像你一样设置结果并完成

标签: android android-activity android-intent


【解决方案1】:

这就是它应该如何工作的方式。您需要覆盖主要活动的 onActivityResult 方法以从意图中获取 stringPath。

【讨论】:

【解决方案2】:

好的。您似乎在 onActivityResult 定义中缺少这一行。

super.onActivityResult(requestCode, resultCode, data);

【讨论】:

  • 我希望它返回到上一个活动,但它似乎重新启动了活动,而不是仅仅返回到它,因为我的所有界面都被重置了。
【解决方案3】:

您的活动似乎正在重新创建。尝试覆盖onSaveInstanceState 并在onCreate 上使用savedInstanceState。它应该可以工作。

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多