Activity 与 DialogFragment 之间的数据传递
来源:互联网 发布:fft算法的基本思想 编辑:程序博客网 时间:2024/05/22 14:43
这篇文章参考了网友的相关资料(因为参考了多名前辈的资料,这里就不一一指明出处了),不过还是非常感谢前辈们的无私分享。此文仅是学习过后的总结,主要目的是以后自己看着方便,如果恰巧能帮到你那也是再好不过了。(文中代码并不全,只是概括了思路,是从我目前的项目中拆下来的)
Activity向DialogFragment传递数据,采用setArguments( Bundle )、getArguments( Bundle )方法传递数据。这个有些类似Activity之间通过Intent传递数据。
Activity中的代码为:
// 列表项监听器(这里点击列表项弹出一个自定义的DialogFragment) ListView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { // MyDialogFragment 为自定义的 DialogFragment ------------- MyDialogFragment myDialogFragment = new MyDialogFragment(); Bundle bundle = new Bundle(); bundle.putInt("Data01", 11111); bundle.putInt("Data02", 22222); bundle.putInt("Data03", 33333); myDialogFragment.setArguments(bundle); myDialogFragment.show(getFragmentManager(), "DialogFragment"); } };
MyDialogFragment中的代码为:
public class MyDialogFragment extends DialogFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 接收关联Activity传来的数据 ----- Bundle bundle = getArguments(); if (bundle != null) { int data01 = bundle.getInt("Data01"); int data02 = bundle.getInt("Data02"); int data03 = bundle.getInt("Data03"); Log.d("Tag", "Data01: " + data01 + " Data02: " + data02 + " Data03: " + data03); } } ......}
DialogFragment向Activity传递数据,采用接口的方式传递数据。在DialogFragment声明一个接口,然后在Activity中调用这个接口。
MyDialogFragment中的代码为:
public class MyDialogFragment extends DialogFragment { private View view; private MyDialogFragment_Listener myDialogFragment_Listener; // 回调接口,用于传递数据给Activity ------- public interface MyDialogFragment_Listener { void getDataFrom_DialogFragment(int Data01, int Data02, int Data03); } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { myDialogFragment_Listener = (MyDialogFragment_Listener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implementon MyDialogFragment_Listener"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 接收关联Activity传来的数据 ----- Bundle bundle = getArguments(); if (bundle != null) { int data01 = bundle.getInt("Data01"); int data02 = bundle.getInt("Data02"); int data03 = bundle.getInt("Data03"); Log.d("Tag", "Data01: " + data01 + " Data02: " + data02 + " Data03: " + data03); } // 去掉对话框默认标题栏 getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); // 加在自定义界面 view = inflater.inflate(R.layout.my_dialog, container); return view; } // DialogFragment关闭时回传数据给Activity @Override public void onDestroy() { // 通过接口回传数据给activity if (myDialogFragment_Listener != null) { myDialogFragment_Listener.getDataFrom_DialogFragment(0, 0, 7); } super.onDestroy(); }}
Activity中的代码为:
public class Activity_AirCondition_AdvancedSettings extends Activity // 这里要implements刚才的接口 implements MyDialogFragment.MyDialogFragment_Listener { // 引用接口中定义的方法 @Override public void getDataFrom_DialogFragment(int data01, int data02, int data03) { Log.d("Tag", "DialogFragment回传的数据为:" + data01 + " " + data02 + " " + data03); }}
以上代码并不全面,仅为关键代码,表达这个思路,不要直接粘到项目中去。
2 0
- Activity 与 DialogFragment 之间的数据传递
- Android开发修改DialogFragment样式以及与activity之间的数据传递
- activity之间的跳转与数据传递
- fragment与Activity之间的数据传递
- Fragment与Activity之间的数据传递
- fragment与Activity之间数据的传递
- Service与Activity之间的数据传递
- Android回调机制之Activity与DialogFragment数据传递
- Activity与Activity之间简单的数据传递
- Activity之间的数据传递-service与activity之间的数据传递
- Activity之间的数据传递
- Activity之间的数据传递
- activity之间的数据传递
- Activity之间的数据传递
- Activity之间数据的传递
- Activity之间的数据传递
- Activity之间的数据传递
- Activity之间的数据传递
- HDU
- static对程序运行影响
- CSipsimple编译
- Spring Boot学习总结(7)——SpringBoot之于Spring优势
- 回归
- Activity 与 DialogFragment 之间的数据传递
- 2006年分区联赛普级组之二 开心的金明
- from表单提交给action自动生成bean的方法
- solidworks打开后,提示“初次使用,等待几分钟。。。”
- (数组)四个数从大到小排序(数组)
- 让django支持sql server
- JAVA之设计模式(创建型模式)
- 微信小程序 相对定位和绝对定位
- netcam studio 棒棒哒 (rtsp + http api)