【问题标题】:Strange behavior startActivityForResult from Fragment来自 Fragment 的奇怪行为 startActivityForResult
【发布时间】:2014-08-05 05:33:13
【问题描述】:

我有一个 Activity FirstActivity.Java,它有一个调用 startActivityForResult() 的 FragmentA.Java。 SecondActivity.Java 调用了 finish() 但 onActivityResult 被调用一次,因为 FragmentA 调用了用 FragmentA 编写的 startActivityForResult()。 Java 之后再也不像 SecondActivity.Java 调用 finish()。

片段A:

Intent popup = new Intent(getActivity(),
PopupActivity.class);
popup.putExtra(PopupActivity.EXTRA_URL, url + "&_resolve=popupResolve");
startActivityForResult(popup, 222);

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 222){
        if (resultCode == Activity.RESULT_OK) {
            executeJS((Uri) data.getSerializableExtra(PopupActivity.EXTRA_RESOLVE));
        }
    }
}

第二个活动:

Intent data = new Intent();
Uri uri = Uri.parse(mUrl);
data.putExtra(EXTRA_RESOLVE, uri);
setResult(Activity.RESULT_OK, data);
finish();

【问题讨论】:

  • 首先替换这段代码 data.putExtra(EXTRA_RESOLVE, uri.toString());并执行JS(Uri.parse(data.getStringExtra(PopupActivity.EXTRA_RESOLVE)));.
  • onActivityResult 覆盖在哪里?在 Activity 或 Fragment 中?
  • @pskink 我尝试在两者中都覆盖,但现在只在片段中

标签: android


【解决方案1】:

当一个Fragment调用startActivityForResult()时,当完成下一个Activity时,onActivityResult方法在第一个Activity被调用,而不是在Fragment中。

【讨论】:

  • 不幸的是它没有发生。 onActivityResult被称为Fragment开始开启SecondActivity,在startActivityForResult之后,可能是FirstActivity调用onPause或者别的之后
猜你喜欢
  • 2017-10-22
  • 1970-01-01
  • 2020-02-10
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多