根据这个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();
}
});
}
结果在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();
}
});