以下是后退按钮的代码。我想通过后退按钮杀死其他活动,但它不能在一个活动中工作,但我有其他活动,没有一个活动,它的工作正常。请帮帮我。
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),
SomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
答案 0 :(得分:2)
这段代码可以帮到你:
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), SomeActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
}
答案 1 :(得分:0)
您必须根据API级别设置标志:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
if(Build.VERSION.SDK_INT >= 11)
{
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK);
}
else
{
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
}
startActivity(intent);
希望它有助于ツ
答案 2 :(得分:0)
您可以在android:noHistory="true"
中的活动标记中设置AndroidManifest.xml
,但不想将其保存在堆栈中。
答案 3 :(得分:0)
尝试在最顶级的父活动或基本活动上定义一个本地广播接收器:
private final class KillReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
在onCreate()中初始化并注册广播接收器,并在最顶层的父活动或基本活动上取消注册onDestroy():
private KillReceiver clearActivityStack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
clearActivityStack = new KillReceiver();
registerReceiver(clearActivityStack, IntentFilter.create("clearStackActivity", "text/plain"));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(clearActivityStack);
}
现在,当要清除以前的所有活动时,请拨打广播接收器:
public void onClick(View v) {
Intent clearIntent = new Intent("clearStackActivity");
clearIntent.setType("text/plain");
sendBroadcast(clearIntent);
Intent intent = new Intent(getApplicationContext(),SomeActivity.class);
startActivity(intent);
}