将消息传递给Handler java

时间:2012-08-01 07:03:42

标签: java android

我有一个实现两个interfaces的课程:OnClickListenerRunnable

当用户按下按钮时,我将进入这样的开关:

@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,但那我正在寻找的答案。

我在这里做错了什么?

1 个答案:

答案 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(); 
        }
    }
};