自定義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

有什麼不對或者有更好的方法歡迎指正交流


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