Android4.0中Alertdialog对话框点击边缘外部消失问题解决

本文介绍如何解决Android 4.0及以上版本中AlertDialog默认因触摸外部区域而自动关闭的问题,并提供两种方法来实现这一功能。
在开发的时候遇到一个问题,就是一触摸对话框边缘外部,对话框会自动消失。这个问题很纠结啊,查找了一下发现从Android 4.0开始,AlertDialog有了变化,就是在触摸对话框边缘外部,对话框会自动消失,查了源码,找到解决办法:

 

       研究其父类时候发现,可以设置这么一条属性,在AlertDialog.Builder.create()之后才能调用这两个方法

 

方法一:

setCanceledOnTouchOutside(false);调用这个方法时,按对话框以外的地方不起作用。按返回键还起作用

方法二:

setCanceleable(false);调用这个方法时,按对话框以外的地方不起作用。按返回键也不起作用

 

这两个方法都属于Dialog方法,可查阅源码

 

修改后的源码如下:

package com.android.settings;


import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.app.AlertDialog;  
import android.content.DialogInterface;  
import android.widget.EditText;  
import android.text.method.PasswordTransformationMethod; 


 

public class TSActivity extends Activity {
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		AlertDialog();
    }
	
	private void AlertDialog()
	{
	    final EditText editText = new EditText(this);
		editText.setTransformationMethod(PasswordTransformationMethod.getInstance());  
		new AlertDialog.Builder(this)
			.setTitle("please input passwd")
			.setCancelable(false)
			.setIcon(android.R.drawable.ic_dialog_info)
			 .setView(editText)
			 .setPositiveButton("ok", new DialogInterface.OnClickListener() {  
			@Override 
			public void onClick(DialogInterface dialog, int which){  
				String Thing = editText.getText().toString();
				if(Thing.compareTo("600518") == 0)
					{
						Intent intent=new Inten(TSActivity.this,MSettings.class);
			 			startActivity(intent);
						Log.d("yj.chen","success-----"+Thing);
						
					}
				finish();
				
				}  
			})
			 .setNegativeButton("cancel", new DialogInterface.OnClickListener() {  
			@Override 
			public void onClick(DialogInterface dialog, int which){  
					finish();
				
				}  
			})
			.show();
				
	};


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值