将消息传递给java处理程序
我有一个类实现了两个将消息传递给java处理程序,java,android,Java,Android,我有一个类实现了两个接口:OnClickListener和Runnable 当用户按下按钮时,我将进入如下开关: @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: pd = ProgressDialog.show(this, "Please Wait", "Generating", false);
接口
: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方法,该方法有如下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
来完成这个任务,但这不是我想要的答案
我做错了什么 您必须检索消息中的对象:
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();
}
}
};