首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 手动设立对话框能否消失

2012-09-25 
android 手动设置对话框能否消失有时候希望给对话框中的内容做验证,希望在验证错误时不能让对话框消失,但

android 手动设置对话框能否消失

有时候希望给对话框中的内容做验证,希望在验证错误时不能让对话框消失,但是在android dialog中,只要点击确认和返回就会自动关闭对话框,十分头疼。。。。

经过查阅网络资料,看到http://shufeipenglove-163-com.iteye.com/blog/1274977的这位大牛给出了用反射控制的方法,于是自己修改后的代码如下,基本没改什么,只是为了以后查阅方便哈。

?

?

?

package com.example.android_dialog_test;import java.lang.reflect.Field;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.view.Menu;import android.widget.EditText;public class MainActivity extends Activity {EditText input;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);input = new EditText(this);Builder builder = new Builder(this);builder.setPositiveButton("check",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 不关闭setClosable(dialog, false);if ((input.getText().toString()).equals("123")) {// 关闭对话框setClosable(dialog, true);dialog.dismiss();}else{input.setText("输入错误!");}}}).setView(input).setNegativeButton("cancel", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {setClosable(dialog, true);dialog.dismiss();}}).create().show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}private void setClosable(DialogInterface dialog, boolean b) {try {Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");field.setAccessible(true);field.set(dialog, b);} catch (Exception e) {e.printStackTrace();}}}

热点排行