【问题标题】:Sending data back to the MainActivity(onActivityResult) from child activity when child activity restarts itself当子活动重新启动时,将数据从子活动发送回 MainActivity(onActivityResult)
【发布时间】:2014-05-26 08:02:53
【问题描述】:

我正在从 ParentActivity 作为 startActivityForResult() 启动一个名为 ChildActivity 的活动。 现在,在子活动中,我有不同的功能需要重新启动活动(ChildActivity)。我正在重新启动活动,例如

Intent intent = getIntent();
startActivityForResult(intent, CODE);
finish();

并且还添加到了ChildActivity中

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK && requestCode == CODE)
        super.onActivityResult(requestCode, resultCode, data);
}

但无论如何,当 ChildActivity 重新启动时,我只得到一个带有 RESULT_CANCELLED 的 ParentActivity 结果。 ChildActivity 重新启动后,我无法收到任何进一步的结果。

我怎样才能得到进一步的结果。

问候, pradeep_ch。

【问题讨论】:

  • 为了什么目的需要重启activity?
  • 子Activity调用startActivityForResult后,是已经打开的Activity的父Activity,所以会调用完成Activity的onActivityResult。我的建议是不要重新开始活动。这不是 Android 的方式;)
  • ChildActivity基本上是用来录制视频的,它有翻转相机选项,当用户点击flip_camera按钮切换相机并且相机切换时需要重新启动活动。
  • @pradeep_ch : 在这里查看切换摄像头而不重新启动您的活动stackoverflow.com/questions/16765527/…

标签: android


【解决方案1】:

如果你真的需要重启这个Activity,从父Activity重启。在onActivityResult中可以处理重启。

【讨论】:

  • 我正在从父活动重新开始活动,谢谢
【解决方案2】:

可能您的意思是重新启动活动是以 android 方式调用 onResume。只需在其中添加一个标志,如果活动具有这种标志,它将加载什么。如果您想重新加载活动,只需在任何地方调用 onResume()。

@Override
protected void onResume() {
    super.onResume();

    if (flag == SOMETHING) {
        // do something or load views
    } else {
        // do something or load views
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多