1

私は2つを実装するクラスを持っています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;
                      }
      }

これにより、次のようなelseステートメントを持つRunメソッドが開始されます。

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これには を使用する必要があると人々が言うと確信していますが、それは私が探している答えではありません。

ここで何が間違っていますか?

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 に答える