从这个fragment2传值到fragment4
fragment2中的代码:
public static void clickMoreBtn() {
// 实例化Fragment页面
fragmentPage4 = new FragmentPage4();
// 得到Fragment事务管理器


FragmentTransaction fragmentTransaction = act
.getSupportFragmentManager().beginTransaction();
// 替换当前的页面

fragmentTransaction.replace(R.id.frame_content, fragmentPage4);
// 事务管理提交
Bundle bundle = fragmentPage4.getArguments();
bundle.putString("userName",bundle.getString("userName")); 
// Log.i("FragmentPage2",bundle.getString("userName"));
fragmentPage4.setArguments(bundle);
fragmentTransaction.commit();
fragment4中的代码:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

Bundle bundle = getArguments();

// Log.i("FragmentPage4",bundle.getString("userName"));
tx = (ImageView) getView().findViewById(R.id.index_my_list1_touxiang);
tv = (TextView)getView().findViewById(R.id.userName);
tv.setText(bundle.getString("userName"));

解决方案 »

  1.   

    感觉你这个写的好乱啊,你关于fragment创建应该写在MainActivity里面    然后 在fragment里面处理传值吧
    public static Fragment newInstance(int position) {
            NewsFragment fragment = new NewsFragment();
            Bundle bundle = new Bundle();
            bundle.putInt("position", position);
            fragment.setArguments(bundle);  //setAraguments 传递一个bundler对象
            return fragment;
        }
      

  2.   

    应该通过setAraguments 传递一个 bundle 对象,然后再另一个页面通过 getArguments 接收这个对象即可。
      

  3.   

    new 一个新Bundle
    把replace移到commit前一句
      

  4.   

    这个值是从一个mainActivity传过来的,
     Bundle bundle = getArguments();
    Log.i("FragmentPage2",bundle.getString("userName"));测试可以传过来,然后再传给下一个fragement,怎么传都传不过去
      

  5.   

    这位兄弟:
        
           现在这种方式早都过时了,可以换种方式来实现。接口回调,或者livedatabus,又或者evenBus来做
      

  6.   

    为什么会在onActivityCreate里获取参数呢?应该在fragment的onCreate里获取才对