Hoa*_*inh 10 android android-fragments navigation-drawer
我正在开发一款需要导航抽屉的应用.这个应用程序有1个MainActivity和大约10个片段.当我单击MainActivity中的导航抽屉图标时,它将显示10个片段,以便我可以选择每个片段.
我选择片段A,然后选择B,然后选择C ...到F.当我在片段F并按下后退按钮时,它会将我带回片段E,然后再返回它将带我去片段D ...
我的问题是,当我回到片段A(当然是从片段B)并再次按下"返回"按钮时,它会将我带到一个空白的白色屏幕(我认为这是主要的活动布局).然后再按回来,应用程序将退出.
我想要的是当我回到片段A(最后一个片段)并点击返回时,应用程序将立即退出,而不是空白的白色屏幕
我搜索了SO并发现了一个类似的问题,但还没有答案,所以我不得不提出另一个问题
我怎样才能做到这一点?非常感谢你
只需在倒数第二个屏幕退出应用程序
public void onBackPressed() {
if (manager.getBackStackEntryCount() > 1 ) {
// If there are back-stack entries, leave the FragmentActivity
// implementation take care of them.
manager.popBackStack();
} else {
// Otherwise, ask user if he wants to leave :)
new AlertDialog.Builder(this)
.setTitle("Really Exit?")
.setMessage("Are you sure you want to exit?")
.setNegativeButton(android.R.string.no, null)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
MainActivity.super.onBackPressed();
}
}).create().show();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我想我是另一个没有回答的问题,所以我想告诉你我的解决方法:
我检查FrameLayout中是否有一个孩子.如果有的话,我会回去一个片段.然后再检查一下.因为我确实只知道白色屏幕,所以我需要在它之后检查0个孩子.如果还存在另一个片段,则无处可做,但如果childs == 0,则要求离开该活动.
或者,如果到达最后一个片段,您可以删除AlertDialog并关闭应用程序.
@Override
public void onBackPressed() {
FrameLayout fl = (FrameLayout) findViewById(R.id.content_frame);
if (fl.getChildCount() == 1) {
super.onBackPressed();
if (fl.getChildCount() == 0) {
new AlertDialog.Builder(this)
.setTitle("Close App?")
.setMessage("Do you really want to close this beautiful app?")
.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
finish();
}
})
.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
}).show();
// load your first Fragment here
}
} else if (fl.getChildCount() == 0) {
// load your first Fragment here
} else {
super.onBackPressed();
}
}
Run Code Online (Sandbox Code Playgroud)