Android基础 —— 自定义DiaLog(注意其中的回调的使用)

在实际开发中常常会用到需要自己定义Dialog的样式和布局等,这时就要使用自定义Dialog。自定义Dialog方法如下:

首先创建布局文件dialog: dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText 
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:id="@+id/name"/>
    
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="确定"
        android:id="@+id/button"/>
    
</LinearLayout>

其次创建MyDialog类继承Dialog:

public class MyDialog extends Dialog
{
	private String name;
	//回调事件
	private OnDialogListener onDialogListener;
	private EditText editText;
	private Button button;
	public MyDialog(Context context,String name, OnDialogListener onDialogListener)
	{
		super(context);
		this.name = name;
		this.onDialogListener = onDialogListener;
	}
	//定义回调事件,用于dialog的点击事件
	public interface OnDialogListener
	{
		public void back(String name);
	}

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.dialog);
		//设置标题
		setTitle(name);
		editText = (EditText)this.findViewById(R.id.name);
		button = (Button)this.findViewById(R.id.button);
		button.setOnClickListener(new ButtonOnClickListener());
	}
	
	private final class ButtonOnClickListener implements View.OnClickListener
	{
		@Override
		public void onClick(View v)
		{
			//设置回调时带回的信息
			onDialogListener.back(editText.getText().toString());
			//关闭dialog
			MyDialog.this.dismiss();
		}
	}
}

最后启动Dialog

/**
     * 点击事件打开Dialog
     */
    public void openDialog(View v)
    {
    	/**
    	 * 注意这里的上下文 (也就是第一个参数)一定不能是getApplicationContext()
    	 * 应该是this 或ABETestActivity.this
    	 * 注意new MyDialog.OnDialogListener() 是回调的实现并获取信息
    	 */
    	MyDialog myDailog = new MyDialog(this, "Entry your name :", 
    			new MyDialog.OnDialogListener()
		{
			@Override
			public void back(String name)
			{
				textView.setText(name);
			}
		});
    	myDailog.show();//显示dialog
    }




你可能感兴趣的:(自定义dialog,Android基础)