当用户按下设备上的后退按钮时,我想移至上一个Activity
但不要返回Home.
例如,如果用户打开了一些Activities
,则后备堆应该是:
当用户按下Back button
时,它应该得到:
然后,如果他再次按下按钮:
然后我想停用此按钮以避免返回Home screen
。
这可能吗?
到目前为止,我正在使用这种方法,但我读过Android L
不支持它:
protected int getActivitiesStackSize()
{
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskList = am.getRunningTasks(1);
return taskList.get(0).numActivities;
}
@Override
public void onBackPressed()
{
// Pop activity
if (getActivitiesStackSize() != 1) super.onBackPressed();
}
Activity_A可能是我项目中的任何Activity
。
答案 0 :(得分:0)
您可以覆盖后退按钮事件,然后在活动A之间移动,但活动A除外,后退按钮仍应退出。示例
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Check if the key event was the Back button
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
//Move to previous activity
return true;
}
// If it wasn't the Back key, bubble up to the default
// system behavior
return super.onKeyDown(keyCode, event);
}
答案 1 :(得分:0)
试试这个:
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Handle the back button
if(keyCode == KeyEvent.KEYCODE_BACK && isTaskRoot()) {
//Ask the user if they want to quit
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.quit)
.setMessage(R.string.really_quit)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Stop the activity
finish();
}
})
.setNegativeButton(R.string.no, null)
.show();
return true;
}
else {
return super.onKeyDown(keyCode, event);
}
}
答案 2 :(得分:-1)
使用android:noHistory =&#34; true&#34;在您希望不导航到的活动的清单中。没有历史记录不会让活动存储在堆栈中。在Activity_B中按回应用程序将被关闭。如果这是您想要的,您可以使用此功能。