我有一个带有3个片段的MainActivity类(每个都在自己的类中) 我的第三个片段(LoginFragment)将允许登录用户,然后转到一个新活动(新的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();
很酷直接去片段1喜欢完成第三个片段谢谢:)
答案 0 :(得分:0)
如果您希望它尽可能快,请使用一个活动和片段来改变内容。添加片段不会创建新窗口,而活动会创建。
另请查看片段/活动启动中的应用程序逻辑(onCreate()
,onResume()
等)。这将是主要因素。
答案 1 :(得分:0)
我在这个想法中解决了这个问题 onBackPressed()我使用 extras 调用新的Intent 在具有3个片段onRestart()的MainActivity中,我检查它是否来自此类(具有额外内容),而不是转到此片段(单击,替换,删除)
@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);
}
}