Fragment与Activity之间传递数据
程序员文章站
2024-03-15 14:45:41
...
fragment 传递数据到activity 中 直接上代码:
- 以下代码可直接复制
/**
* 当FRagmen被加载到activity的时候会被回调
*
* @param activity
*/
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof FragmentInteraction) {
listener = (FragmentInteraction) activity;
} else {
throw new IllegalArgumentException("activity must implements FragmentInteraction");
}
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
/**
* 定义了宿主activity必须实现的接口
*/
public interface FragmentInteraction {
/**
* Fragment 向Activity传递指令,这个方法可以根据需求来定义
*
* @param isTheme
*/
void isTheme(boolean isTheme);
}
/**
* 用来与外部activity交互的
*/
private FragmentInteraction listener;
- 第二步
再合适的位置把想要传递的数据,通过isTheme(true)传递,我这里是设置主题通过fragment改变MainActivity的tab颜色,此方法根据业务需要自己定义,比如传递对象,变量等.
- 第三步
宿主activity实现FragmentInteraction重写isTheme()方法拿到fragment的数据
- 下面是Activity像fragment传递数据
第一步再fragment 中定义该方法,重写fragment的onCreate方法,再onCreate把数据取出来,这样就完成了activity和fragment数据传递
public static TestFragment newInstance(boolean isTheme) {
Bundle bundle = new Bundle();
bundle.putBoolean("isTheme", isTheme);
TestFragment fragment = new TestFragment();
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
Bundle bundle = getArguments();
if (bundle != null) {
isTheme = bundle.getBoolean("isTheme");
}
super.onCreate(savedInstanceState);
}
- 第二步再宿主activity中 对fragment初始化
fragmentList.add(TestFragment.newInstance(true));
fragmentList.add(TestFragment.newInstance(false));
fragmentList.add(TestFragment.newInstance(true));
fragmentList.add(TestFragment.newInstance(false));
fragmentAdapter = new FragmentAdapter(getChildFragmentManager());
viewpager.setAdapter(fragmentAdapter);
tabLayout.setViewPager(viewpager);
在这里我这边是通过viewpager配合fragment 其他同理, getChildFragmentManager()由于是fragment嵌套fragment所以这里要使用getChildFragmentManager如果是activity嵌套fragment要使用getSupportFragmentManager
下篇讲述如何让viewpager不预加载
上一篇: 判断素数(质数)的方法
下一篇: 判断质数的几种方法
推荐阅读
-
Fragment与Activity之间传递数据
-
Servlet 之间的跳转+数据传递
-
如何实现多个servlet之间的跳转和传递数据
-
vue祖孙组件之间的数据传递
-
form表单的Action.java文件和jsp之间数据传递 博客分类: web框架 strutsjavajspJavaScriptXHTML
-
asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
-
asp.net 文件上传与刷新与asp.net页面与iframe之间的数据传输
-
字符串与整型、浮点型数据之间的转换
-
Android Activity之间相互调用与传递参数的原理与用法分析
-
Android Activity之间相互调用与传递参数的原理与用法分析