我有两个活动,“A”和“B”,“A”打开“B”。当用户点击活动“B”上的后退按钮时,我不想看到“A”,我只想关闭“A”。所以在“B”上我这样做了:
@Override
public void finish() {
// TODO Auto-generated method stub
Intent intent = new Intent(this, LoginActivity.class).putExtra(TAG, TAG).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
//super.finish();
}
在活动“A”中,我这样做了:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getIntent().getExtras() != null)
if(getIntent().getStringExtra(HomeActivity.TAG) != "")
finish();
}
它完美无缺,但我得到了这个例外:
E/ActivityThread(11115): Activity br.com.pedmobiledroid.view.controller.LoginActivity has leaked IntentReceiver com.android.internal.policy.impl.multiwindow.MultiPhoneWindowEvent$1@42045be0 that was originally registered here. Are you missing a call to unregisterReceiver()?
有人确实知道更好的方法吗?
答案 0 :(得分:0)
好的,你需要重新排序你的逻辑。
而不是在来自活动B时杀死活动A,如果它转到活动B,则简单地杀死活动A.这样,当用户按下时它不会在后台上:)
所以,从A:
Intent startActivityBIntent = new Intent(this, MyClassB.class);
startActivity(startActivityBIntent);
this.finish();
就是这样,活动B上不需要代码,因为A已经完成了自己。
答案 1 :(得分:0)
启动finish()
后,只需在ActivityA
上致电ActivityB
:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
finish();