我已经有了这段代码。
我试图理解处理程序如何与线程一起工作。在几次尝试之前,我给出了一个没有错误的代码,但它没有工作=(
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" ,但它没有做到=(
我认为我做得很好,但没有。
答案 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+"");