2016-09-16 8 views
0

をクリックしてください。どのようにクリックストップボタンをクリックしてリスナー停止ボタンonclickリスナーをクリックすると、開始ボタンonclickリスナの実装を停止する方法。クリックボタンで

public class MainActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);  
    'final EditText number = (EditText)findViewById(R.id.number); 
    final Button start = (Button)findViewById(R.id.start); 
    final Button stop =(Button)findViewById(R.id.stop); 
    start.setText("Start"); 
    stop.setText("Stop"); 
    start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
       while(true){ 
        try { 
           //some functionality. 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
         break; 
        } 

       }//while ends here 
     } 
    }); 
    stop.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      //stop functionality 

     } 
    }); 
} 
} 

のスタートボタンでwhileループを停止します。クリックリスナーの開始ボタンでループを停止する方法

答えて

0

whileループの実行を中断する方法を書いているので、コードはスレッド用であると思われます。基本的にMainActivityはスレッドへの参照を持ちますon start clickイベントで作成されますが、このスレッド参照は変数MainActivityに保存する必要があります。オンストップクリックイベントは、作成されたスレッドでinterrupt()メソッドを呼び出します。バックグラウンドでスレッドを実行して、UIスレッドをブロックせず、実際に停止ボタンのクリックリスナーを受け取れるようにしてください。停止スレッドの詳細についてはrun threads on background :バックグラウンドスレッドの詳細については

thread interruption

0

これを試してみてください:

public class MainActivity extends AppCompatActivity { 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      "final EditText number = (EditText)findViewById(R.id.number);" 
      final Button start = (Button)findViewById(R.id.start); 
      final Button stop =(Button)findViewById(R.id.stop); 
      start.setText("Start"); 
      stop.setText("Stop"); 

      boolean b = true; 

      start.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        while(b){ 
         try { 
          //some functionality. 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
          break; 
         } 

        }//while ends here 
       } 
      }); 
      stop.setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View view) { 
        b = false; 

       } 
      }); 
     } 
    } 
関連する問題