您好,登錄后才能下訂單哦!
//首先在XML文件中配置一下 <TextView android:id="@+id/textViewId" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="數據" /> <Button android:id="@+id/butid" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="發送消息" android:layout_below="@id/textViewId" />
接下來重點是MainActivity中的代碼段
public class MainActivity extends Activity { private Button but; private TextView textview; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); but=(Button)findViewById(R.id.butid); textview=(TextView)findViewById(R.id.textViewId); but.setOnClickListener(new ButList()); handler =new MyHandler(); } class ButList implements OnClickListener{ @Override public void onClick(View v) { NetWorkThread net=new NetWorkThread(); net.start(); } } class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { //Toast.makeText(getApplicationContext(), Thread.currentThread().getName(), Toast.LENGTH_LONG).show(); String s=(String)msg.obj; textview.setText(s); } } class NetWorkThread extends Thread{ @Override public void run() { //模擬訪問網絡,所以當線程運行時,首先休眠2秒鐘 //Toast.makeText(getApplicationContext(), Thread.currentThread().getName(), Toast.LENGTH_LONG).show();//得到當前線程的名字 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } //模擬的數據 String s="從網絡當中獲取的數據"; //textview.setText(s);這樣做是錯誤的,因為Android系統中,只有在Main Thread 中才能操作UI Message msg=handler.obtainMessage(); msg.obj=s; handler.sendMessage(msg); } }
這僅僅是模擬Handler的小Demo,僅供自己學習使用。謝謝大家。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。