将消息传递给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(); 
        }
    }
};