当前位置: 代码迷 >> Android >> android 手动设立对话框能否消失
  详细解决方案

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

热度:101   发布时间:2016-05-01 13:37:57.0
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;	@Override	public 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() {					@Override					public 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() {					@Override					public void onClick(DialogInterface dialog, int which) {						setClosable(dialog, true);						dialog.dismiss();					}				}).create().show();	}	@Override	public 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();		}	}}
  相关解决方案