在项目中,很多时候我们需要在一个Fragment直接跳转到另一个Fragment,并携带一些数据过去,下面写出一种比较容易理解的方法。
现在我们准备从fragment2跳转到fragment1,并把一个数据带给fragment1
<pre name="code" class="java"><span style="font-family:Microsoft YaHei;font-size:14px;"> String args = "hello fragment1";</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre"> </span>FragmentManager fm = ((MainActivity)getActivity()).getFragmentManager();
Fragment1 fragment1 = new Fragment1();
FragmentTransaction ft = fm.beginTransaction();
Bundle bundle = new Bundle();
bundle.putString("key",</span><span style="font-family:Microsoft YaHei;font-size:14px;">args)</span><span style="font-family: 'Microsoft YaHei';">;</span><span style="font-family:Microsoft YaHei;font-size:14px;">
fragment1.setArguments(bundle);
ft.replace(R.id.layout_fl, f1);
ft.addToBackStack(null);
ft.commit();</span>
上面的代码我们是编写在fragment2中的,这两个fragment都依附在同一个Activity上,拿到FragmentMangner,new出来要跳转的对象,也就是fragment1,之后开启事物。
调用fragment1.setArguments(bundle);方法,就把数据传递给了fragment1
现在我们来看,如何在fragment1中取出数据
在fragment1中编写代码
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre"> </span>String args = getArguments().getString("key");</span>
这样很简单就把bundle中的字符串取了出来
很多人出现空指针异常的错误,这时候你就要判断是否你的设置数据是否在取出数据之前,建议你做一个bundle是否为null的判断吧~