0

「A」と「B」の2つのアクティビティがあり、「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

開始後にfinish()呼び出すだけです:ActivityAActivityB

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

わかりました、あなたが持っているロジックを並べ替える必要があります。

アクティビティ B から来るときにアクティビティ A を強制終了する代わりに、アクティビティ A がアクティビティ B に移動する場合は、単純にアクティビティ A を強制終了します。そうすれば、ユーザーが押し戻したときにバックスタックにはなりません :)

したがって、A から:

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

それだけです。A は既に終了しているため、アクティビティ B にコードは必要ありません。

于 2013-05-08T14:12:24.630 に答える