【问题标题】:onActivityResult - using nested activitiesonActivityResult - 使用嵌套活动
【发布时间】:2014-04-02 10:36:25
【问题描述】:

我的问题更多是讨论如何重组我的项目,或者解决这种情况。

我有以下架构: MainActivity,带有 TabHost,为每个现有选项卡加载 Activity。因此,对于第一个标签,我正在调用/打开 FirstTabActivity,而这个 FirstTabActivity 正在调用另一个名为 GalleryPickActvity

的 Activity(以挑选一些照片)

这是我所拥有的: FirstTabActivity

Intent intent = new Intent(CreateCommentsActivity.this, SelectPicturesActivity.class);
startActivityForResult(intent, 1);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    Log.i("TAG", "onActivityResult");    
}

GalleryPickActvity

Intent intent = new Intent(GalleryPickActvity.this,
                            FirstTabActivity.class);
setResult(Activity.RESULT_OK, intent);
finish();

方法:onActivityResult从未被调用,我猜是因为我使用嵌套活动,所以结果丢失了。

所以我有两个问题:

  1. 即使它不是最好的方法(活动 -> 活动 -> 活动),我该如何解决这个问题?

  2. 构建这种情况的最佳方法是什么?我需要在所有 Tabs 活动中保持状态,我可以通过活动来做到这一点(现在的方式)。

【问题讨论】:

    标签: android android-activity nested onactivityresult


    【解决方案1】:

    如果您想打开第三个活动,您可以只使用带有一些参数的startActivity(),以便知道一切都是正确的。您是否有任何特殊原因在您的第三个活动中使用onActivityResult() 而没有从第三个活动中调用startActivityForResult(...)?。

    【讨论】:

    • 调用 startActivityForResult() 和 onActivityResult() 的活动是第二个活动。
    • 然后只需使用setResult(Activity.Result_OK); finish();,如果您要返回上一个活动,则不需要该意图。
    • 但永远不会调用 onActivityResult() 方法。
    • 如果我做对了,您的第二个活动使用startActivityForResult() 调用第三个活动,而第三个活动是使用setResult(...) 的活动,对吗?检查您是否在第二个活动中呼叫finish()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多