如何在android中的接口回调内部传输数据

问题描述 投票:0回答:1

根据这个link,作者创建了一个对话框,它使用接口回调将数据从对话框传输到活动。

用户使用方法DataBackListener定义getData(String data)接口,

我丢失的地方是用户使用listener.getData(str);将日期传输到getData(String data)方法,data是方法中的参数并且没有返回值,这是如何工作的?或者我应该阅读哪部分java才能理解它?先谢谢

使用界面定义对话框:

/**
 * Created by mhwang on 2015/11/18.
 */
public class MyDialog extends Dialog {
    //callback interface
    public interface DataBackListener{
        public void getData(String data);
    }
    private EditText editText;
    private Button btnSure;

    DataBackListener listener;   //create listener
    public MyDialog(Context context, final DataBackListener listener) {
        super(context);

        //initial listener
        this.listener = listener;
        setContentView(R.layout.dialog);
        editText = (EditText)findViewById(R.id.edit);
        btnSure = (Button)findViewById(R.id.sure);
        btnSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = editText.getText().toString();

                //call the interface here to transfer the data
                listener.getData(str);
                dismiss();
            }
        });
    }
}

在活动中使用对话框:

public class DialogActivity extends Activity {
    EditText showResult;
    Button btnStartDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        showResult = (EditText)findViewById(R.id.showResult);
        btnStartDialog = (Button)findViewById(R.id.start);
        btnStartDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建对话框对象的时候对对话框进行监听
                MyDialog dialog = new MyDialog(DialogActivity.this,
                        new MyDialog.DataBackListener() {
                            @Override
                            public void getData(String data) {
                                String result = data;
                                showResult.setText(result);
                            }
                        });
                dialog.show();
            }
        });
    }
java android interface callback
1个回答
0
投票

结果在DialogActivity中的侦听器内返回:

 btnStartDialog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //创建对话框对象的时候对对话框进行监听
            MyDialog dialog = new MyDialog(DialogActivity.this,
                    new MyDialog.DataBackListener() {
                        @Override
                        public void getData(String data) {
                            String result = data;            <-----Here
                            showResult.setText(result);
                        }
                    });
            dialog.show();
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.