2011-10-23 12 views
0

ボタンを一度押すと、whileループが停止し、メッセージが表示されますが、もう一度押すとwhileループが再開しません(実行可能ファイルのメッセージが表示されないため、これはわかります)。コードは条件付きでのみ動作しますか?

また、(!boo)whileスレッドとboo = trueの組み合わせ。ボタンの中に何も結果が出ません。

何が間違っていますか?私はブールブー=真;私はそれが問題だとは思わない...

public class UiTester extends Activity { 


    protected static final String TAG = null; 

    String s=""; 

    Button stopper; 

    TextView display3; 
    //Boolean boo=true; 
    int n=0; 

    public Boolean boo=true; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     on=(Button) findViewById(R.id.bon); 
     off=(Button) findViewById(R.id.boff); 
     display=(TextView) findViewById(R.id.tvdisplay); 

     display3=(TextView) findViewById(R.id.tvdisplay3); 
     stopper=(Button) findViewById(R.id.stops); 


     final Handler handler = new Handler(); 
     final Runnable updater = new Runnable() { 
      public void run() { 
       n++; 
       display3.setText("System On"+n); 
      } 
     }; 


     stopper.setOnClickListener(new View.OnClickListener() { 


      @Override 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(boo==true) 
       { 
       boo=false; 
        display3.setText("System Off"); 
       } 
       else{ 
        boo=true; 
       } 

       } 
     }); 


     Thread x = new Thread() { 
      public void run() { 
       while (boo) { 
        handler.post(updater); 

      //non UI elements can go here 
        try { 

         Log.d(TAG, "local Thread sleeping"); 
         Thread.sleep(1000); 
        } catch (InterruptedException e) { 
         Log.e(TAG, "local Thread error", e); 
        } 

       } 
      } 
     }; 


     x.start(); 
    } 

} 
+0

編集ありがとうございます! – user947659

答えて

0

booがfalseのときにスレッドが終了する。もう一度やり直すことはありません。

+0

ああ、ありがとう!このソリューションを実装するために、私はboo = falseを入れてみました。 x.start(); ... xはThreadオブジェクトとして認識されません。私はこれがオブジェクトの人生と関係しているかもしれないと思う。しかし、私は確信していない。 – user947659

+0

スレッドを再起動することはできません。もしbooが真であれば内側ループに入る外側ループを保持する必要があります。 – roni

+0

は感謝します! – user947659

関連する問題