我的应用程序中只有一个活动,带有多个片段。无论何时用户打开该应用程序,它都以startupFragment
开头。无论何时用户浏览碎片并按回,都会将其带回startupFragment
。但是当在startupFragment
中时,我希望用户在点击后能够关闭应用程序。现在,这里是代码,当应用程序启动时创建的片段:从片段中关闭android应用程序
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set starting fragment
StartupFragment startupFragment = new StartupFragment();
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().add(R.id.content_main, startupFragment, "startupFragmentTag").commit();
}
正如你所看到的,我已经添加了标签"startupFragmentTag"
能够识别它。这是我的代码onBackPressed:
@Override
public void onBackPressed()
{
Fragment startup = getFragmentManager().findFragmentByTag("startupFragmentTag");
if(startup == null) {
android.support.v4.app.FragmentManager manager = getSupportFragmentManager();
StartupFragment startupFragment = new StartupFragment();
manager.beginTransaction().replace(R.id.content_main, startupFragment, "startupFragmentTag").commit();
} else {
finish();
}
}
所以基本上我想在这里,当用户在另一个片段,当用户按压背部,它会带他/她回到startupFragment
。但是当在该片段中时,再次按下时,我希望用户能够退出该应用程序,现在不会发生这种情况。
我找到startupFragment
的标签,并检查它是否存在。如果没有,它会把用户带回去。但如果存在,用户应该能够退出,为什么要调用finish()
。
以前的碎片没有被破坏吗?但事实并非如此,因为即使我打开应用程序并立即按下,它也不会退出应用程序。
我在这里做什么错了?