2016-07-14 11 views
4

ボタンAは、単純なActivity.startActivity()メソッドを使用してonClickListener内で別のアクティビティを開始し、ボタンBはそのonClickListener内で他の作業を行います。Activity.onPause()の後のイベントをクリックします。

ボタンBをクリックした直後に新しいアクティビティが開始され、古いアクティビティのonPause()ライフサイクルイベントは発生しますが、2番目のボタンのonClickイベントは発生しますが、Activity.onPause()の後私のアプリにいくつかの状態の不一致が生じる。

isPausedフラグを使用せずにonPause()の後にタッチ/クリックイベントが配信されないようにする方法はありますか?

**編集:**私のコード:基本的に

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button buttonA = (Button) findViewById(R.id.activity_button); 
     buttonA.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivity(new Intent(MainActivity.this, TestActivity.class)); 
      } 
     }); 

     Button buttonB = (Button) findViewById(R.id.log_button); 
     buttonB.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.e("TEST", "onClick"); 
      } 
     }); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     Log.e("TEST", "onPause"); 
    } 
} 

あなたは十分に高速であり、その後、BのonClickがonPause後に解雇されたボタンA後のボタンBの右をクリックした場合。

+1

あなたが助けようとしている誰にも明確にするために何をしようとしているのか、いくつかのコードを投稿できますか? –

+0

onPause()が起動された後にクリックイベントが配信されないようにするだけです。 – Mariusz

+0

onClickイベントが自動的に発生することはありません。あなたのコードを入力すれば、われわれの問題を見つけることができます。 – Sayem

答えて

2

ボタンAのOnClickListenerで、ボタンbを無効にします。

Button.setEnabled(false); 

要件に応じて、AのonClickListenerまたはonResumeのボタンを有効にするだけです。

+0

この回答をありがとう、私のビューの階層が本当に複雑な場合、私は多くのビューを無効にする必要があります。 – Mariusz

+1

@Mariuszは 'Activity#dispatchTouchEvent(MotionEvent ev)'をオーバーライドしました – pskink

関連する問題