我在MainACtivity类的onCreate方法中有这段代码:
setContentView(R.layout.activity_main);
Button button1 = (Button)findViewById(R.id.button1);
button1.setText("Start");
final baresipThread thread = new baresipThread();
button1.setOnClickListener(new View.OnClickListener() {
boolean running = false;
@Override
public void onClick(View v) {
if (!running) {
((Button)v).setText("Stop");
thread.start();
running = true;
} else {
thread.kill();
running = false;
((Button)v).setText("Start");
}
}
});baresipThread类看起来像这样:
package com.tutpro.baresip;
public class baresipThread extends Thread {
public void run() {
baresip_start();
}
public void kill() {
baresip_kill();
}
public native void baresip_start();
public native void baresip_kill();
}如果从代码中删除thread.start()/thread.kill()调用,则每次按下按钮时都会切换按钮的文本。但是如果包括线程调用,当我按下按钮时,按钮的文本(最初是Start)没有变化。线程启动正常。
为什么文本没有更改,以及如何更改?
发布于 2017-10-13 00:42:49
使用下面的代码
final boolean running = false;
final baresipThread thread = new baresipThread();
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!running) {
((Button)v).setText("Stop");
thread.start();
running = true;
} else {
thread.kill();
running = false;
((Button)v).setText("Start");
}
}
});https://stackoverflow.com/questions/46714303
复制相似问题