黄沙百战穿金甲,不破楼兰终不还。这篇文章主要讲述如何在android中的接口回调内部传输数据相关的知识,希望能为你提供帮助。
【如何在android中的接口回调内部传输数据】根据这个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();
}
});
推荐阅读
- PrimaryLanguageOverride在发布appxbundle中不起作用
- 在ASP.NET MVC App中初始化AutoMapper v6时出错
- 可捕获的致命错误(类Proxies的对象 __ CG __AppBundleEntityModelo无法转换为字符串)
- 使用appcmd添加新的网站问题
- 根据PC更改app.config连接字符串
- 当文件实际引用v10时,找不到v11.0WebApplicationsMicrosoft.WebApplication.targets
- 如何在Android中做像Combobox这样的“东西”()
- 如何在android studio 3中使用photoview 2.0.0
- 滚动带有ScrollController的CustomScrollView时,SliverAppbar仍然可见