您的位置:首页 > 移动开发 > Android开发

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

2015-04-21 22:52 393 查看
在实际开发中常常会用到需要自己定义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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: