自定义Dialog并实现接口回调

今天学习自定义一个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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章