我有一个实现两个interfaces
的课程:OnClickListener
和Runnable
当用户按下按钮时,我将进入这样的开关:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
pd = ProgressDialog.show(this, "Please Wait",
"Generating", false);
Thread t = new Thread(this);
t.start();
break;
}
}
这应该启动我的Run-method,它有一个像这样的else语句:
else {
Message msg = handler.obtainMessage();
msg.obj = "1";
handler.sendMessage(msg);
}
我的处理程序方法:
private Handler handler = new Handler() {
@SuppressWarnings("unchecked")
@Override
public void handleMessage(Message m) {
pd.dismiss();
if(m.toString().equals("1")) {
Toast.makeText(getApplicationContext(), "Do a scan first", Toast.LENGTH_SHORT).show();
}
}
};
代码运行没有任何异常,但Toast
未显示,应该是!我相信人们会说我应该使用AsyncTask
,但那不我正在寻找的答案。
我在这里做错了什么?
答案 0 :(得分:2)
您必须检索邮件中的对象:
private Handler handler = new Handler() {
@SuppressWarnings("unchecked")
@Override
public void handleMessage(Message m) {
pd.dismiss();
String message = (String)m.object;
if(message.equals("1")) {
Toast.makeText(getApplicationContext(), "Do a scan first", Toast.LENGTH_SHORT).show();
}
}
};