2016-07-29 8 views
0

のonClickアクション中に隠すボタン:アンドロイド - 私はこのようなのonClickアクション中にボタンを非表示にする必要があり

public void onClick(View view) { 
    switch (view.getId()){ 
     case R.id.button1: 

      Button button2 = (Button) findViewById(R.id.button2); 
      button2.setVisibility(View.GONE); 

      //Some methods 
      //... 

      button2.setVisibility(View.VISIBLE); 

      break; 
    } 

しかし onClickの後にのみ可視性が変化し、私はボタンを非表示に何ができますかの間にonClick?

おかげ

あなたは以下のようにしようとするかもしれ
+1

ユーザーが別のビューをクリックしている間にボタン/ビューを非表示にしたい場合、 'onClickListener'の代わりに' onTouchListener'を実装する必要があります –

+0

ボタンを非表示にしたいのですが、いくつかのメソッド "が実行されます。 – Villat

答えて

1

、これを試してみてください。

public void onClick(View view) { 
switch (view.getId()){ 
    case R.id.button1: 

     final button2 = (Button) findViewById(R.id.button2); 
     button2.setVisibility(View.GONE); 

     setVisibility(GONE); 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       //your work 

       runOnUiThread(new Runnable() { //resetting the visibility of the button 
        @Override 
        public void run() { 
         //manipulating UI components from outside of the UI Thread require a call to runOnUiThread 
         button2.setVisibility(VISIBLE); 
        } 
       }); 
      } 
     }).start(); 

     break; 
} 
} 
+0

それは動作します!別の質問には、合計3つのスレッドがあり、1つはGONEの可視性を設定し、もう1つは作業を行い、もう1つは可視性を再び設定するためのものです。 2つのスレッドで同じことが可能ですか? – Villat

+1

実際には2つのスレッド、UIスレッドと2つ目のスレッドがあり、 'runOnUiThread'は新しいスレッドを作成せず、' run'メソッドの中にコードをUIスレッドにポストするだけです。 'runOnUiThread'メソッドに関するドキュメントから: _ UIスレッドで指定されたアクションを実行します。現在のスレッドがUIスレッドの場合、アクションは即座に実行されます。現在のスレッドがUIスレッドでない場合、アクションはUIスレッドのイベントキューにポストされます。 –

0

:あなたは、視認性のchangementに気づくかもしれ同じスレッドですべての操作を実行しているので、当然の

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    switch(v.getId()){ 
    case R.id.button1: { 
     if(event.getAction() == MotionEvent.ACTION_DOWN){ 

      Button button2 = (Button) findViewById(R.id.button2); 
      button2.setVisibility(View.GONE); 

      return true; 
     } else if(event.getAction() == MotionEvent.ACTION_UP) { 

      // some methods 

      Button button2 = (Button) findViewById(R.id.button2); 
      button2.setVisibility(View.VISIBLE); 

      return true; 
     } 
    return false; 
    } 
} 
関連する問題