java - onbackpressed() 从 Activity 到特定 fragment

标签 java android android-fragments android-intent

我有一个包含 3 个 Fragment 的 MainActivity 类(每个 Fragments 都在自己的类中) 我的第三个 fragment (LoginFragment)将允许用户登录,然后转到一个新 Activity (新 Intent ),其中包含该用户的一些信息(例如产品)。

如果我按回该 Intent 将返回到 LoginFragment。 我重写 @OnBackPressed 来启动 MainActivity:

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

我需要知道如何用 MainActivity 中的 LauncherFragment( fragment 1)替换该 Fragment。

我有这个解决方案,但根据设备需要 0.5 秒到 1-2 秒

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
this.finish();

直接进入 fragment 1 就好了,就像完成第三个 fragment 一样,谢谢:)

最佳答案

我用这个想法解决了这个问题 onBackPressed() 我调用一个新的 Intent,但带有 extras 在具有 3 个 fragment onRestart() 的 MainActivity 中,我检查它是否来自此类(具有额外内容)而不是转到此 fragment (单击、替换、删除)

@Override
    public void onBackPressed() {
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra(Constants.Intents.NAVIGATE_BACK, true);
        intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        this.finish();

}

在 MainActivity 上我得到了这个

@Override
    protected void onRestart() {
        super.onRestart();
        Intent intent = getIntent();
        boolean navigate = intent.getBooleanExtra(Constants.Intents.NAVIGATE_BACK, false);
        if (navigate) {
            View homeView = bottomNavigationView.findViewById(R.id.home);
            homeView.performClick();
            intent.removeExtra(Constants.Intents.NAVIGATE_BACK);
        }
    }

关于java - onbackpressed() 从 Activity 到特定 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46897698/

相关文章:

java - Eclipse:在 block 中查找可以抛出异常的行

java - 如何用switch语句替换if else语句

java - (Android)通过intent传递多维数组

android - 如何以编程方式访问Android中的apk生成时间?

Android 软键按钮隐藏 View 的内容

android - 无法将数据从 Activity 传递到 fragment

java - Akka 启动并访问 actors 返回的数据

java - 需要将结果写入 Xls 中

android - Android Studio中超出了GC开销限制

android - 在 Android 中包含布局或包含 fragment 有什么区别?