嵌套片段分页器.setcurrentitem不工作



我有一个片段在我的ViewPager中有一个DatePicker,如果用户从选择器中选择一个日期,他将通过回调到活动返回。

该活动获取片段的ViewPagerContainer,并根据日期将分页设置为另一天。

成功到达容器片段中的函数并记录正确的日期,但分页没有更新,它保持在同一页上…没有崩溃之类的。

我代码:

mainactivity (调用containerfragment)

 public void onDatumSelected(int days) {
    RoosterPagerContainer positionRooster = (RoosterPagerContainer) fragmentje;
    positionRooster.updatePager(days);
}

fragmentje是在navigationDrawer中设置的

 case 0:
                getSupportActionBar().setIcon(R.drawable.ic_action_time);
                fragment = new RoosterPagerContainer();//this is the contianer
                this.fragmentje = fragment;

ContainerFragment (set pager not working)

    @InjectView(R.id.vp_pages) ViewPager pager;
    public CarouselActivity theActivitiy;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)       {
        View view = inflater.inflate(R.layout.roosterfragment_container, container, false);
        ButterKnife.inject(this, view);
        pager.setAdapter(buildAdapter());
        pager.setCurrentItem(5000, false);
        pager.getAdapter().notifyDataSetChanged();
        pager.setOffscreenPageLimit(0);
        return view;
    }
    public void updatePager(int days)
    {
        Log.e(String.valueOf(days), "This is logged but the pager dont switch???");
        //pager.post(new Runnable() {
          //  public void run() {
                pager.setCurrentItem((5000 + days), true);
                pager.getAdapter().notifyDataSetChanged();
         //   }
      //  });
    }
    private PagerAdapter buildAdapter() {
        return(new BootstrapPagerAdapter(theActivitiy, getChildFragmentManager()));
    }
    @Override
    public void onAttach(Activity activity) {
        // TODO Auto-generated method stub
        super.onAttach(activity);
        try {
            theActivitiy = (CarouselActivity) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " ik snap er niks van");
        }
    }

childdofcontainerfragment (Calls mainactivity)

 OnHeadlineSelectedListener mCallback;
public interface OnHeadlineSelectedListener {
    public void onDatumSelected(int days);
}
@Override
public void onDateSet(CalendarDatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
    DateTime selectednow = DateTime.forDateOnly(year, (monthOfYear+1), dayOfMonth);
    DateTime today = DateTime.now(TimeZone.getDefault());
    //if(!(selectednow.isSameDayAs(selected)))
    //
    int days = (selectednow.getModifiedJulianDayNumber() - today.getModifiedJulianDayNumber());
    mCallback.onDatumSelected(days);
}
@Override
public void onAttach(Activity activity) throws ClassCastException {
    super.onAttach(activity);
    try {
        mCallback = (OnHeadlineSelectedListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity
                + " must implement OnHeadlineSelectedListener");
    }
}

公共类BootstrapPagerAdapter扩展FragmentPagerAdapter {

public BootstrapPagerAdapter(final FragmentManager fragmentManager) {
    super(fragmentManager);
   // this.ctxt = ctxt;
}
@Override
public int getCount() {
    return 10000;
}
///@Override
//public int getItemPosition(Object object){
   // return FragmentStatePagerAdapter.POSITION_NONE;
//}
@Override
public Fragment getItem(int position) {
    DateTime pagerdate = DateTime.now(TimeZone.getDefault());
    DateTime days = pagerdate.plusDays(position - 5000);
    Log.e("Datepager",String.valueOf(days));
    Bundle bundle = new Bundle();
    bundle.putString("date", days.format("YYYY-MM-DD").toString());
    RoosterFragment roosterFragment = new RoosterFragment();
    roosterFragment.setArguments(bundle);
    return roosterFragment;
}

}

(我改变了一些东西在这段代码当我张贴其他人,但仍然是相同的问题…)

我也使用旧的android设备android.v4的支持。片段等。

我也确定int days不是0而是8

不知何故,它修复了fragmentje没有设置因为我忘记了它在我的导航抽屉中有两次所以这是修复。

   case 0:
                getSupportActionBar().setIcon(R.drawable.ic_action_time);
                fragment = new RoosterPagerContainer();
                this.fragmentje = fragment;
                break;
            case 1:
                getSupportActionBar().setIcon(R.drawable.ic_action_time);
                fragment = new RoosterPagerContainer();
                this.fragmentje = fragment;//this was not before...
                break;

最新更新