Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在notifyDataSetChanged上再次从ViewPager向片段传递参数_Android_Android Fragments - Fatal编程技术网

Android 在notifyDataSetChanged上再次从ViewPager向片段传递参数

Android 在notifyDataSetChanged上再次从ViewPager向片段传递参数,android,android-fragments,Android,Android Fragments,我是Android新手,不确定这是否是一个明智的问题,所以提前道歉。在过去的几个小时里,我一直在解决这个问题,但仍然没有什么好运气 我有一个带有2个片段和碎片的寻呼机。这两个片段都基于从具有viewpager的活动传递的ID值从数据库中获取数据。viewpager第一次创建片段时,我将该ID值作为捆绑包发送给getItem中带有setArgumentsbundle方法的片段,并在adapter类中覆盖该方法 我在ActionBar上有一个按钮,onClick更新活动中ID的值,更新Fragmen

我是Android新手,不确定这是否是一个明智的问题,所以提前道歉。在过去的几个小时里,我一直在解决这个问题,但仍然没有什么好运气

我有一个带有2个片段和碎片的寻呼机。这两个片段都基于从具有viewpager的活动传递的ID值从数据库中获取数据。viewpager第一次创建片段时,我将该ID值作为捆绑包发送给getItem中带有setArgumentsbundle方法的片段,并在adapter类中覆盖该方法

我在ActionBar上有一个按钮,onClick更新活动中ID的值,更新FragmentPagerAdapter类中ID的值,并调用notifyDataSetChanged重新创建所有片段。问题是我第一次作为参数发送的ID没有更新,因为片段中的数据没有更新,因为它是基于ID值从DB中获取的

调用notifyDataSetChanged时,再次更新片段中的参数的最佳方法是什么

请帮助我找到合适的解决方案。先谢谢你

以下是3个类的相关代码摘录:

在活动课上:

在PagerAdapter类中

在片段类中:


我面临着一个类似的问题,你解决了吗?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {

// Actionbar menu has NEXT menu option.
case R.id.next:
    {
        id++;   //ID is the variable that's value is to be passed
        mAdapter.setValue(id);    //mAdapter is object of PagerAdapter class that extends FragmentPagerAdapter 

        mAdapter.notifyDataSetChanged();

        invalidateOptionsMenu();
        break;
    }
public void setValue(String id) {  //setter function for setting ID value
    this.id = id;
}


//this is where first time arguments are passed to fragments
@Override
public Fragment getItem(int index) {

    switch (index) {
    case 0:
    {
        // Main Abstract Content Fragment
        Bundle bundle = new Bundle();
        bundle.putString("id", id);

        AbstractContentTabFragment y = new AbstractContentTabFragment();
        y.setArguments(bundle);
        return y;
    }   

    return null;
}


//I had to override this because I needed to re-create all fragments
@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}
//this is how id value is updated in fragment class
id = getArguments().getString("value");