自定义Dialog并实现接口回调

来源:互联网 发布:伊犁知乎 编辑:程序博客网 时间:2024/06/06 02:27

今天学习自定义一个Dialog控件并试着将它封装了,封装就不说了,我自己都还云里雾里呢,下面是自定义的Dialog控件并实现回调的代码

1 自定义的MyDialog控件

package com.example.zinan.base;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;/** * Created by zinan on 10/22/15. */public class MyDialog extends Dialog {    //创建接口,执行相应的操作    //回调接口其实就是一个传递数据的工具 back为需要传值的方法    public interface OnMyDialogListener{        public void back(String name);    }    private String name;    private OnMyDialogListener onMyDialogListener;    TextView textView;    EditText editText;    Button button;    //构造函数    public MyDialog(Context context,String name,OnMyDialogListener onMyDialogListener) {        super(context);        this.name = name;        this.onMyDialogListener = onMyDialogListener;//初始化接口,与设置监听一个道理    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.layout_mydialog);        textView = (TextView)findViewById(R.id.textView);        textView.setText("自定義控件信息:" +name);        editText = (EditText)findViewById(R.id.editText);        button = (Button)findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //返回自定义控件的值到主Activity,使用回调实现这个功能                onMyDialogListener.back(editText.getText().toString());                MyDialog.this.dismiss();            }        });    }}

2 MainActivity


package com.example.zinan.mydialog;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.example.zinan.base.MyDialog;public class MainActivity extends ActionBarActivity {    TextView textView ;    Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView)findViewById(R.id.textView);        button = (Button)findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //声明回调接口的对象,为声明的接口对象赋值                MyDialog myDialog = new MyDialog(MainActivity.this, "我的Dialog", new MyDialog.OnMyDialogListener() {                    @Override                    public void back(String name) {                        textView.setText("成功回調信息:"+name);                    }                });                myDialog.show();            }        });    }}

3 效果图

                                 

4 布局文件省略昂

5

有什么不对或者有更好的方法欢迎指正交流


0 0
原创粉丝点击