0

我有两个活动,“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()?

有人知道正确执行此操作的更好方法吗?

4

2 回答 2

0

好的,您需要重新排序您拥有的逻辑。

与其在来自 Activity B 时杀死 Activity A,不如在 Activity A 去往 Activity B 时简单地杀死它。这样,当用户按下返回时,它就不会在后台堆栈上:)

所以,从A:

Intent startActivityBIntent = new Intent(this, MyClassB.class);
startActivity(startActivityBIntent);
this.finish();

就是这样,活动 B 不需要任何代码,因为 A 已经完成了自己。

于 2013-05-08T14:12:24.630 回答
0

finish()启动ActivityA后调用ActivityB

Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);
finish();
于 2013-05-08T14:12:54.883 回答