6

アクティビティAにはボタンがあり、そのボタンでonclick新しいアクティビティBを開始します。新しいアクティビティには、最小限のonCreate関数しかありません。

アクティビティAIでは、を使用するボタンを押します

startActivity(new Intent(A.this, B.class)) 

アクティビティBを開始するには、プログラムを実行するときに、アクティビティAのボタンを押すと、アクティビティBが開始されますが、戻るボタンを2回使用して終了し、最初のアクティビティに戻る必要があります。

Aのボタンがクリックされたときにlogcatを確認しましたが、2つの同じインスタンスが同時に作成されます。また、デバッグのためにアクティビティBでinを使用してみました。これは、戻るボタンを使用すると、他のツインBアクティビティでを呼び出すことを示していToastます。この投稿を見つけました。戻るボタンを2回クリックして、質問に答えないアクティビティを終了します。onCreateonCreate

ツインインスタンスの作成を阻止できる唯一の方法はtag:launchMode= "singleInstance"、マニフェストのアクティビティにを使用して明示的に制限することでした。

質問はまだ残っています:

  1. なぜ2つのインスタンスを作成するのですか?
  2. これを止めて、これが起こらないように正しく使う方法は?

詳細説明:コード:アクティビティAには、どのボタンがクリックされたかをチェックするswitch(view.getId())があるbuttOnClick()関数があります。いずれの場合も、特定の整数パラメーター(ボタンID)を使用して関数アニメーションを呼び出します。この関数では、スイッチは再びIDをチェックし、setAnimationListenerを使用してボタンに対応するアニメーションを実行します。アニメーションの最後に、新しいアクティビティの開始を要求します。これがどのように見えるかです:

public void myButtonOnClick(View view)
    {


        switch (view.getId()) {

        case R.id.button1:

            animation(1);

            break;
           //....more lines.....  }}
public void animation(int a){

           //...code...

          switch(a){

        case 1:
            anim.setAnimationListener(new AnimationListener() {

                public void onAnimationStart(Animation arg0) {
                    // TODO Auto-generated method stub

                }

                public void onAnimationRepeat(Animation arg0) {
                    // TODO Auto-generated method stub

                }

                public void onAnimationEnd(Animation arg0) {
                    Intent in =new Intent(A.this,     B.class);
                    startActivity(in.addFlags(      Intent.FLAG_ACTIVITY_CLEAR_TOP ));
                    animClear();
                }
            });


            break;
//......... other cases......}
4

1 に答える 1

3

インテント フラグ

私自身は のセットを使用しましたFLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDが、それはやり過ぎかもしれません。

それからちょうど

startActivity(new Intent(A.this, B.class).addFlags(intent_flags));
于 2012-12-29T03:34:23.913 に答える