2014-10-05 104 views
0

我已经这段代码。处理程序不工作在Android

我想了解处理程序如何与线程一起工作。多次尝试之前,我给了没有错误代码,但它并没有工作=(

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

将打印'HOLA'!为什么? – mmlooloo 2014-10-05 03:23:12

+0

“HOLA”就是一个例子,我只是想知道处理程序为什么不工作= S – 2014-10-05 03:24:43

+0

它正在工作,你为什么认为你的例子不起作用? – mmlooloo 2014-10-05 03:25:24

回答

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"); 
0

你设置Message.obj,然后你在Messageobj调用toString没有。

更改

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

TEXTO.setText((String)msg.obj+""); 
相关问题