我有一个包含 3 个片段的 MainActivity 类(每个片段都有自己的类)我的第三个片段(LoginFragment)将允许登录用户,然后转到新活动(新意图),其中包含该用户的一些信息,例如产品。
如果我按回去,该意图将返回到登录片段。我覆盖@OnBackPressed
以启动主活动:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
this.finish();
我需要知道如何在 MainActivity 中用 LauncherFragment(片段 1)替换该片段。
我有这个解决方案,但根据设备需要 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();
直接进入片段 1 会很酷,就像完成第三个片段一样,谢谢:)
我解决了这个想法中的问题onBackPressed()我称之为新的意图,但有额外的在具有 3 个片段的主活动中,我检查它是否来自这个类(有那个额外的),而不是去这个片段(点击,替换,删除)
@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();
}
在主活动上我得到了这个
@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);
}
}
如果您希望它尽可能快,请使用一个活动和片段来改变内容。添加片段不会创建新窗口,而活动会创建新窗口。
还要查看片段/活动启动中的应用程序逻辑(onCreate()
、onResume()
等)。这将是主要因素。