2014-10-05 64 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+"");