Ich versuche ein Beispiel zu erstellen, um zu wissen, wie Handler arbeiten. Wie im Code belwo gezeigt, habe ich einen workerThread erstellt, der für immer läuft und die Variable i inkrementiert. Innerhalb der run() - Methode möchte ich den Wert der inkrementierten Variable an einen TextView übergeben, wie im Rumpf der Handler-Klasse gezeigt.sendMessage() ist nicht definiert
Das Problem ist, die Zeile, in der es "neue Handler()" und "handler.sendMessage (m)" mit roten
markiert ist, lassen Sie es mich wissen, wie dieses Problem zu lösen
MainActivity
public class MainActivity extends AppCompatActivity {
private final static String TAG = MainActivity.class.getClass().getSimpleName();
private TextView mtvIncr = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.mtvIncr = (TextView) findViewById(R.id.tvValue);
new WorkerThread().start();
}
Handler handler =new Handler() {//ERROR
@Override
public void handleMessage(Message msg) {
int sentInt = msg.getData().getInt("what");
mtvIncr.setText("r:"+Integer.toString(sentInt));
}
};
class WorkerThread extends Thread {
private int i = 0;
android.os.Handler mHandler = null;
@Override
public void run() {
super.run();
Looper.prepare();
while(true) {
Log.d(TAG, SubTag.bullet("WorkerThread", "i: " + (i++)));
SystemClock.sleep(1000);
Message m = new Message();
Bundle b = new Bundle();
b.putInt("what", i); // for example
m.setData(b);
handler.sendMessage(m);//ERROR
}
}
}
}
Mögliche Duplikat [myHandler.obtainMessage() wird in Service-Klasse in Android nicht erlaubt] (http: // Stackoverflow .com/questions/36215126/myhandler-erhaltensmeldung-ist-nicht-erlaubt-in-service-klasse-in-android) –
Ich glaube auch, es ist die gleiche Frage ... Wahrscheinlich, falscher Import. – W0rmH0le