カウントを開始するスレッドからタイマーを停止しようとしています。私は、「START」ボタンを押すとすべてが大丈夫ですが、現時点では私は「STOP」ボタンを押すと、私は次のエラーを取得:シンプルタイマーをトレッドで止める
FATAL EXCEPTION: main Process: com.example.user.a4_1_basic_handler, PID: 20375 java.lang.IllegalStateException: Could not execute method for android:onClick
私はこれで新しいよ、私はちょうど置くしようとしています実際にはスレッドを使用してハンドラを使用します。誰かがプラスになるスレッドを終了する方法を教えてくださいすることができます:)
package com.example.user.a4_1_basic_handler;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//Java variables
int num =0;
boolean stopThread=false;
//Android variables
static final String S_TAG=MainActivity.class.getSimpleName();
Handler handler;
Thread counter = new Thread(new tstart());
tstart test;
// UI
TextView textView;
Button start_button;
Button stop_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(S_TAG,"OnCreate Thread ID: "+Thread.currentThread().getId());
handler = new Handler(getApplicationContext().getMainLooper());
tstart test;
textView=(TextView) findViewById(R.id.textView);
start_button=(Button) findViewById(R.id.start_button);
stop_button=(Button) findViewById(R.id.stop_button);
}
//UI
public void OnClick_start(View view){
counter.start();
}
public void OnClick_stop(View view){
test.finish();
}
//Methods
public void timer(){
num++;
textView.setText(String.valueOf(num));
}
public void clock(){
try {Thread.sleep(1000);}
catch (InterruptedException e) {e.printStackTrace();}
}
//Thread
class tstart extends Thread{
@Override
public void run() {
while (!stopThread) {
clock();
textView.post(new Runnable() {
@Override
public void run() {
timer();
}
});
}
}
public void finish(){
stopThread=true;
}
}
}
ありがとうございました!私はあなたが後で私を参照するライブラリを使用します。今私はダミーの演習でスレッドを完全に理解しようとしています。 –
あなたは 'onstart test;'メソッドを 'onCreate()'メソッドの中にグローバルかつローカルで宣言しましたが、 'OnClick_stop'メソッドの中でそのオブジェクト参照の使用を開始したり使い始めたりしませんでした。 – Aryan