Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 安卓在子進程中使用使用Toast

安卓在子進程中使用使用Toast

編輯:關於Android編程

今天,在Android子進程想使用Toast進行提示,於是直接在子進程使用
Toast.makeText(getApplicationContext(),"www.lovemu.com.cn",Toast.LENGTH_SHORT);

但是這樣會出錯,程序會崩潰,

尋找了很多資料,總是不盡如人意。

綜合了許多方法,最終得以實現。

新建一個自定義Handler類,【以避免出現This Handler class should be static or leaks might occur 警告】

public class MsgHandler extends Handler {
	private Activity activity;
	public MsgHandler(Activity activity){
		this.activity=new WeakReferenc(activity).get();//使用弱引用WeakReferenc,以避免Handler內存洩露
	}
	@Override
	public void handleMessage(Message msg) {

		switch (msg.arg1) {
		case 1:
			showInfo("登錄成功!");
			break;
		case 2:
			showInfo("用戶名稱或者密碼錯誤,請重新輸入!");
			break;
		case 3:
			showInfo("如果登錄成功,以後賬號和密碼會自動輸入!");
			break;
		case 4:
			showInfo("網絡未連接!");
			break;
		case 5:
			showInfo("用戶賬戶是必填項!");
			break;
		case 6:
			showInfo("用戶口令是必填項!");
			break;
		default:
			break;
		}
		super.handleMessage(msg);
	}
	
	/**
	 * 顯示提示信息
	 * @param info
	 */
	public void showInfo(String info)
	{
		Toast.makeText(activity.getApplicationContext(),info, Toast.LENGTH_SHORT).show();
	}

}

而後,在Login.java代碼中使用:

// 實現Handler
private Handler handler;
// 消息
private Message msg;
...
handler = new MsgHandler(Login.this);

在需要使用Toast的進程使用:

msg = handler.obtainMessage();//其中這句與msg.arg1一起使用,以避免再次運行程序時提示msg.arg1定義的值已使用,如This message is already in use.
msg.arg1 = 1;
handler.sendMessage(msg);

使用示例如:

Thread loginThread = new Thread(new Runnable() {
@Override
	public void run() {
		// 執行輸入校驗
		if (validate()) {
		// 如果登錄成功
		if (loginPro()) {
			msg = handler.obtainMessage();
			msg.arg1 = 1;
			handler.sendMessage(msg);
			// 啟動Main Activity
			Intent intent = new Intent(Login.this, Main.class);
			startActivity(intent);
			Bundle bundle = new Bundle();
			bundle.putString("MAP_USERNAME", userName);
			intent.putExtras(bundle);
			// 轉向登陸後的頁面
			startActivity(intent);
		} else {
			proDialog.dismiss();
			msg = handler.obtainMessage();
			msg.arg1 = 2;
			handler.sendMessage(msg);
		}
	}
});
loginThread.start();



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved