这是我的onBackPressed:
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
moveTaskToBack(false);
}
}
这是我重新启动MAIN活动的方式:
public void restart() {
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
}
moveTaskToBack 在重新启动之前运行良好。 但重启后它不再有效。 我该怎么办?
答案 0 :(得分:0)
如果您从DrawerMainActivity.java打开Fragment,则此链接可以帮助您Handle Back Pressed
答案 1 :(得分:0)
我找到了解决方案。 一种方法是用 moveTaskToBack(true); 替换 moveTaskToBack(false); 。 但这实际上并没有解决问题。 真正的解决方案是添加finish();重新启动另一个活动后,新的活动将成为根活动。 现在代码是这样的:
public void restart() {
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
finish();
}