【问题标题】:Navigate from Activity to Fragment从活动导航到片段
【发布时间】:2018-03-26 19:15:41
【问题描述】:

我正在开发一个具有一个活动和多个片段的 Android 应用程序,因此我添加了一个锁定功能,如果十分钟内没有交互,该功能会锁定用户。我通过创建一个扩展 AppCompatActivity 并在没有与应用程序交互的情况下导航到 lockScreenActivity 的活动来做到这一点。现在,从 Web 套接字解锁应用程序后,我想导航回在导航之前保留当前片段的活动。我该怎么办。

在堆栈溢出中的搜索表明我这样做了:

startActivity(new Intent(this, MainActivity.class));

这对我不起作用,在 LockScreenActivity 上调用完成也不起作用。

谢谢。

【问题讨论】:

  • 看看 Jetpack Navigation 库
  • 谢谢 IgorGanapolsky,我会检查一下,非常感谢

标签: android android-layout android-fragments android-intent


【解决方案1】:

如果您要从 Fragment 转到您的 MainActivity,您应该这样做

Intent intent = new Intent(getActivity(), mFragmentFavorite.class);
startActivity(intent);

但是,如果您要从 Activity 转到 Fragment ,请执行此操作

Intent intent = new Intent(this, mFragmentFavorite.class);
startActivity(intent);

如果你正在做一个 finish()lockActivity 并在 lockActivity 内做另一个完成,堆栈中没有活动可以膨胀,也许这就是为什么不适合你

【讨论】:

  • 那么在这种情况下,mFragmentFavorite 是一个片段?
  • 没有必要,这是一个随机类,从片段到活动你应该使用 getActivity() 和从活动到片段 this,或者活动的名称 .this
  • 如果你想让 mFragmentFavorite 成为一个片段,你应该从 FragmentActivity 在你的扩展中更改为 Fragment
  • 我不能直接导航到片段的父活动吗?
  • 你说得对,我在做:intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);开始活动(意图);
【解决方案2】:

如果你想从 Activity 回到 Fragment。 这非常简单,只需在您的活动中覆盖 onBackPressed() 并在您想要的地方调用 onBackPressed。请参阅下面的代码,这将更清楚您的概念。

@Override
public void onBackPressed() {
    super.onBackPressed();

    }

 //now call onBackPressed to navigate from activity to fragment
 toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多