Fragment 之间传递数据
程序员文章站
2022-03-13 12:11:41
...
关于Fragment 之间的跳转这里就不再说了 有兴趣的可以看我的这边博客
Fragment 跳转首先先跳转到宿主的Activity 上
这里以在同一个Activity 上2个Fragment 为例
第一种方法:
MainActivity main = (MainActivity) getActivity();
main.setTabSelection(2);
这里用到了自己在MainActivity的切换Fragment的方法
然后在MainActivity case 为2 的地方直接写传递的数据
case 2:
OrderMeFragment orderMeFragment = new OrderMeFragment();
Bundle bundle = new Bundle();
bundle.putString("str", "蓝天");
orderMeFragment.setArguments(bundle);
ordermeImage.setImageResource(R.mipmap.btn_tab_mine_selected);
ordermeText.setTextColor(Color.parseColor("#5EC9FA"));
if (orderMeFragment == null) {
orderMeFragment = new OrderMeFragment();
transaction.add(R.id.order_content, orderMeFragment);
} else {
transaction.show(orderMeFragment);
}
break;
这里传递了一个蓝天
然后在接受值的Fragment 里面 写一个onCreate 方法接受值如下
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String str = getArguments().getString("str");
Log.e("----------str",str);
}
}
这样和我们Activity 之间的传值类似, 不过set 和get 存放值和接受值要注意下
第二种方法 使用 newInstance
1 同样的我们先获取宿主Activity
MainActivity main = (MainActivity) getActivity();
main.setTabSelection(2);
然后到MainActivity 里面 case 里面 ,就是到切换Fragment的地方 传值
case 2:
OrderMeFragment orderMeFragment = OrderMeFragment.newInstance(2);
ordermeImage.setImageResource(R.mipmap.btn_tab_mine_selected);
ordermeText.setTextColor(Color.parseColor("#5EC9FA"));
if (orderMeFragment == null) {
orderMeFragment = new OrderMeFragment();
transaction.add(R.id.order_content, orderMeFragment);
} else {
transaction.show(orderMeFragment);
}
break;
这里写一个newInstance 里面传递一个int 为2的值
到要接受值的Fragment 里面填写如下
private int index;
public static OrderMeFragment newInstance(int index) {
OrderMeFragment df = new OrderMeFragment();
Bundle bundle = new Bundle();
bundle.putInt("index", index);
df.setArguments(bundle);
return df;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
index = getArguments().getInt("index");
Log.e("-------index", String.valueOf(index));
}
}
这样我们就看一个看到接受的值了
当然还有EventBus 等之类的传值 ,不过能传值的还是不建议使用EventBus ,
Fragment 传值 需要先明白Fragment 的跳转问题 然后在传值就明白的多了
一般都是在Fragment的宿主Activity 里面写传递的值 ,不是同一个Activity Fragment 之间的传值也是类似这样
到切换Fragment的地方写传递的值。。。。。
上一篇: SpringBoot SpringEL表达式的使用
下一篇: sql求1到100的质数