【问题标题】:How to navigate from Activity B to specific fragment of Activity A?如何从活动 B 导航到活动 A 的特定片段?
【发布时间】:2020-05-04 07:55:47
【问题描述】:
  1. 我有Activity A,其中在ViewPager 中包含4 个FragmentsBottomNavigationView
  2. 从第四个Fragment 我导航到Activity B
  3. Activity B 中有一个Button,单击时应导航 到Fragment BActivity A

如何接近?需要注意的一点是,我不希望重新创建 Activity A,因为在 Activity A 上正在进行很多 API 调用

P.S 我已经看到了类似问题的答案,但没有一个适用,因为我不处理导航视图。

【问题讨论】:

  • 我认为您必须将 setFragment 方法设为全局,然后使用 intent 传递片段值
  • 你试过startActivityForResult吗?
  • 我不想重新创建活动 A
  • @Adi 尝试使用startActivityForResult。 ADM 是完美的

标签: android android-fragments android-activity android-viewpager bottomnavigationview


【解决方案1】:

我建议以Intent 开头Activity,有意添加类似

intent.putExtra(KEY_FRAGMENT, "YourFragmentName")

在其他Activity:

  val fragmentName = intent.getStringExtra(KEY_FRAGMENT)
        if (fragmentName == "YourFragmentName") {
            // show fragment here
        }

【讨论】:

  • 不适用,因为我想加载堆栈中的先前活动 A。请阅读编辑后的说明
  • 将此代码与来自 A 的 startActivityForResult() 结合使用,在 B 中使用 setResult()finish()。在 B 中,只需在 onActivityResult() 中获取结果并在那里进行导航。
【解决方案2】:

你可以试试startActivityForResult()

从 Fragment 到 ActivityB 的第一次点击

 Intent intent = new Intent(getActivity(), ActivityB.class);
 startActivityForResult(intent, 102);

按钮从ActivityB点击到Fragment

Intent backIntent = new Intent();
        backIntent.putExtra("data","test");
        setResult(RESULT_OK,backIntent);
        finish();

然后添加onActivityResult ()片段部分

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (data != null) {
            if (requestCode == 102) {
                if (resultCode == RESULT_OK) {

                    if(!TextUtils.isEmpty(data.getStringExtra("data")))
                    {
                        //
                    }


                }
            }
        }
    }

【讨论】:

  • 它是关于在活动中启动片段,而不是查看寻呼机
  • @AntonisRadz ViewPager with BottomNavigationView
  • @AntonisRadz If ViewPager then user can use setCurrentItem else your logic
  • 不适用,因为我想加载堆栈中的先前活动 A。请阅读编辑后的说明
  • @Adi 检查我的逻辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多