处理程序在android中不起作用

时间:2014-10-05 03:07:59

标签: android multithreading handler

我已经有了这段代码。

我试图理解处理程序如何与线程一起工作。在几次尝试之前,我给出了一个没有错误的代码,但它没有工作=(

public class Principal extends ActionBarActivity {


TextView TEXTO;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    TEXTO=(TextView)findViewById(R.id.TEXTO);




    new Thread(new Runnable() {

        @Override
        public void run() {

                 android.os.Message msg = new android.os.Message();
                 msg.obj="FUNCIONO";

                 vistaHandler.handleMessage(msg);// i tried with send message and neither works
        }
    }).start();


}
Handler vistaHandler = new Handler() {

    public void handleMessage(Message msg) {
        TEXTO.setText(msg.toString()+"");
    }
};

}

如果有效,它会打印" HOLA" ,但它没有做到=(

我认为我做得很好,但没有。

2 个答案:

答案 0 :(得分:0)

以这种方式创建您的消息(这可以根据您的需要简化):

Message msgObj = vistaHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putString("message", yourMessage);
// Add any other stuff you want to the bundle
msgObj.setData(bundle);
vistaHandler.sendMessage(msgObj);

然后在handleMessage(Message msg)执行此操作:

String response = msg.getData().getString("message");

答案 1 :(得分:0)

您正在设置Message.obj,然后您在toString上呼叫Message而不是obj

更改您的

`TEXTO.setText(msg.toString()+"");`

TEXTO.setText((String)msg.obj+"");