【高手来】如何关闭当前AlertDialog
有俩个手机 一台手机A给另一台手机B拨打电话 B不接电话直接点拒绝要让他提示出来一个AlertDialog对话框显示“用户忙” 利用Handler发送消息打开对话框提示
但现在的问题是 A给B打电话 B挂断后 B上面提示“用户忙” 如何在B挂断后 B不现实提示框“用户忙”
对话框:
private void popupRejectDialog(int type) {
if(BUSY == type){
rejectAlert = new AlertDialog.Builder(this).setMessage("用户忙")
.setCancelable(false).show();
playMusic(MUSCI_TYPE_BUSY, true);
}
线程:
private Thread action= new Thread() {
public void run() {
Looper.prepare();
popupRejectDialog(type);
Looper.loop();
}
};
private final Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
break;
case MSG_REJECTDIALOG:
if(rejectAlert != null && rejectAlert.isShowing())
mHandler.sendEmptyMessageDelayed(MSG_CALL_READYTOFINISH,
100);
break;
不知道怎么解决了! 用cancel(); dismiss()方法都用了 最后的结果是都不显示提示框 ,现在是想让B拒绝或A提示“用户忙”
[解决办法]
1、看你的意思应该是捕获到相应的电话状态改变事件后进行的后续处理,那你应该去查PhoneStateListener的各种状态,通过这些状态来判断哪个是拨打方,哪个是接收方,然后只让拨打方提示。
2、如果你确实是我上条说的那个情况,可你为什么要贴上面那些代码呢,完全没有关系啊。不过你贴的代码有两个地方我觉得很别扭:
(1)你为什么直接在Thread里去操作ProgressDialog呢,就算你的dialog没有与Activity关联,这样调用不会出错(我没试过),但是在外部线程处理这种控件的操作也不合适吧。
(2)更何况你都定义了Handler了,为什么不在handler里控制dialog呢,却在handler里再发送handler消息。
[解决办法]
你用Activity,Theme为dialog,这样的话,直接关掉actvity也是可以的!