1

我有一个实现两个的类interfacesOnClickListenerRunnable

当用户按下按钮时,我会像这样进入 Switch:

@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;
                      }
      }

这应该启动我的运行方法,它有一个这样的 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没有显示,应该是!我相信人们会说我应该为此使用 an AsyncTask,但这不是我正在寻找的答案。

我在这里做错了什么?

4

1 回答 1

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(); 
        }
    }
};
于 2012-08-01T07:05:40.550 回答