我有2个活动:Main和List。
从Main可以打开List;从列表中可以打开Main。
我想它,以便名单的每一个开放并没有得到保存到“历史”。因此,从Main上按回去将无法返回到列表。
可能吗?
我有2个活动:Main和List。
从Main可以打开List;从列表中可以打开Main。
我想它,以便名单的每一个开放并没有得到保存到“历史”。因此,从Main上按回去将无法返回到列表。
可能吗?
Answers:
当开始您的列表时Activity,请按以下方式设置其Intent标志:
Intent i = new Intent(...); // Your list's Intent
i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
startActivity(i);该FLAG_ACTIVITY_NO_HISTORY标志可防止将新内容Activity添加到历史记录堆栈中。
注意:正如@Sam指出的,您可以i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);改用。没有功能上的差异。
Intent标志说明“仅在不返回Activity原点时才添加到历史记录”。
                    在清单文件中添加:
android:noHistory="true" 您不想保留的活动。
使用新任务进行清除。在其他情况下,这在我的情况下可行。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);看来,如果您在打开另一个活动后立即在活动上调用finish(),则已完成的活动将从堆栈中删除。
例如:
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
finish();在我的特定情况下FLAG_ACTIVITY_NO_HISTORY,它不起作用。也没有FLAG_ACTIVITY_NEW_TASK或FLAG_ACTIVITY_CLEAR_TASK单独工作独自工作。
但是FLAG_ACTIVITY_NEW_TASK,FLAG_ACTIVITY_CLEAR_TASK一起做。
Intent intent = new Intent(FooActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);较晚的答案,但增加了其他答案的深度。这一切都取决于您希望从该活动开始的其他活动中发生什么
选项1-仅此一项活动不应具有呼叫活动的历史记录
然后做:
Intent i = new Intent(...);
i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);选项2-从该特定活动开始的所有活动都不应具有历史记录
然后添加调用活动的清单:
android:noHistory="true" 但是,如果您确实希望在新活动中有历史记录,则必须手动删除该标志:
Intent i = new Intent(...);
i.removeFlag(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);希望能解决其他问题:)
只是想添加一种在Kotlin中执行此操作的方法:
val i = Intent(this, LogInActivity::class.java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK))Intent(this, MainActivity::class.java).apply {             addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)         }.also {             startActivity(it)         }
                    将标志添加FLAG_ACTIVITY_NEW_TASK到您的Intent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
您是否可以不覆盖特定活动上的后退按钮来停止“返回”功能?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.onKeyDown(keyCode, event);
}Activity不是一个好习惯。
                    OnBackPressed那个。
                    
finish()在之后立即调用它startActivity(...)。这样,如果用户从“ main”按“ BACK”,将没有任何内容可返回。