【发布时间】:2016-07-19 13:05:29
【问题描述】:
我正在尝试创建一个示例来了解处理程序是如何工作的。如下面的代码所示,我创建了一个永远运行的 workerThread 并递增变量 i。内 run() 方法,我想将递增变量的值传递给 TextView,如 Handler 类的主体所示。
问题是,有“new Handler()”和“handler.sendMessage(m)”的那一行被标记为红色
请告诉我如何解决这个问题
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
}
}
}
}
【问题讨论】:
-
我也相信这是同一个问题......可能是错误的导入。
标签: android handler android-handler