Toast只能在主UI线程使用,使用下面的办法可以解决
第一种,使用Looper,不过这种办法会终止,子线程之后的代码
- Looper.prepare();
- Toast.makeText(aActivity.this,"test",Toast.LENGTH_SHORT).show();
- Looper.loop();
第二种,就是用 Handler Message
- private final Handler msgHandler = new Handler(){
- public void handleMessage(Message msg) {
- switch (msg.arg1) {
- case R.string.msg_not_network:
- Toast.makeText(getApplicationContext(), getResources().getString(R.string.msg_not_network), Toast.LENGTH_SHORT).show();
- Toast.makeText(getApplicationContext(), msg.obj.toString(), Toast.LENGTH_SHORT).show();
- break;
- default:
- break;
- }
- }
- };
在子线程中使用
- Message msg = msgHandler.obtainMessage();
- msg.arg1 = R.string.msg_not_network;
- msg.obj. = "显示的内容" ;
- msgHandler.sendMessage(msg);