使用Handler时获取CalledFromWrongThreadException

时间:2014-02-01 20:58:25

标签: android android-handler

当我按下按钮时,我不断得到CalledFromWringThreadException。

我的程序是这样的:

public class MainActivity extends Activity implements Callback {
    Handler handler = new Handler(this);
    TextView tv = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv1);
        Button button = (Button) findViewById(R.id.sendRequest);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        //...
                        Message msg = handler.obtainMessage(0, new String("\nSending Request from " + sourcePortString));
                        handler.dispatchMessage(msg);
                        //...

                    }
                }).start();
            }
        });
    }

    @Override
    public boolean handleMessage(Message msg) {
        tv.append((CharSequence) msg.obj);
        return true;
    }

}

我尝试删除implements Callback并在anonymus类中扩展Handler类,实现handleMessage(Message msg)方法。但是当我尝试将某些内容添加到TextView时,我仍然得到相同的结果。

我遗失了一些东西。

我以为我终于掌握了那些Handler ...

你能帮帮我吗?

1 个答案:

答案 0 :(得分:3)

您使用了错误的方法dispatchMessage

使用sendMessage。 此致