更改片段顺序并传递数据android

时间:2014-02-17 14:10:31

标签: android android-fragments

我有4个片段1,2,3,4。我想从3切换到2,所以新订单将是1,3,2,4。 一切都很好,除了我丢失了我的传递数据,没有错误,只是一个安静的拒绝!大声笑 这是片段代码的一部分:

List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,PageCreator.class.getName())); // 1
fragments.add(Fragment.instantiate(this,PageRecette.class.getName())); // 2
fragments.add(Fragment.instantiate(this,PageArome.class.getName()));   // 3   
fragments.add(Fragment.instantiate(this,PageUser.class.getName()));    // 4

this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);

ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);

众所周知的传递数据(从2个和3个片段到活动):

@Override
public void onClick(DialogInterface dialog, int id) {       
 // Passing Datas to MainActivity
 Click_status = 0;
 mListener.onListItemSelected(item_name, id, Click_status, Fsa.Press_pos);
}
 @Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);

try {
            mListener = (onListItemSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement onListItemSelectedListener");
        }
}

然后在同一个片段中:

 public interface onListItemSelectedListener{
    public void onListItemSelected(String item_name, int id, int Click_status, int Press_pos);
 }

所有这些数据都传递给主要活动

 import com.tutos.PageRecette.onListItemSelectedListener; //Passing Datas
 import com.tutos.PageArome.onLongClickSelectedListener;

那么方法等...

在片段切换之前,Everythings工作正常 - 数据通过, 然后,如果我改变顺序或片段,我就失去了它们。

  fragments.add(Fragment.instantiate(this,PageCreator.class.getName())); // 1 
  fragments.add(Fragment.instantiate(this,PageArome.class.getName()));   // 3  
  fragments.add(Fragment.instantiate(this,PageRecette.class.getName())); // 2   
  fragments.add(Fragment.instantiate(this,PageUser.class.getName()));    // 4

任何线索?谢谢你的阅读!

1 个答案:

答案 0 :(得分:0)

如果此数据在两个或更多片段之间共享,那么您可以将此数据添加到活动中,您可以随时使用

在片段内访问它
((Your Activity class name)getActivity())."the getter or setter method"

如果共享访问多个活动,您也可以将它们设为静态。