0

这是我第一次在应用程序中使用标签,我觉得这将是一个简单的修复,但我找不到正确的解决方案。我现在有 5 个标签片段,但是当我运行它时,它们都包含相同的材料。我认为问题出在这种方法上:

@Override
    public Fragment getItem(int position) {
        Fragment fragment = new MiscFragment();
        Bundle args = new Bundle();
        args.putInt(MiscFragment.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
        return fragment;
    }

我将片段设置为 a new MiscFragment();(当我创建项目时,eclipse 自动使用 dummyfragment 构建)

我有:

public static class MiscFragment extends Fragment {

    public static final String ARG_SECTION_NUMBER = "section_number";

    public MiscFragment() {

    }
    View rootView;
    GridView gridView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.misc_fragment,
                container, false);

        gridView = (GridView) rootView.findViewById(R.id.miscgridview);
        gridView.setAdapter(new MiscAdapter(getActivity()));
        return rootView;
    }


}

public static class OtherFragment extends Fragment{

    public static final String ARG_SECTION_NUMBER = "section_number";

    public OtherFragment(){

    }
    View rootView;
    GridView gridView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup contatiner,
            Bundle savedInstanceState){
        rootView = inflater.inflate(R.layout.sb_fragment,
                contatiner, false);
        gridView = (GridView) rootView.findViewById(R.id.sbgridview);
        gridView.setAdapter(new OtherAdapter(getActivity()));
        return rootView;
    }

}

(第一个方法和两个内部类都在我的 MainActivity 中)看起来它们都使用相同的东西,"section_number"所以两个GridViews 都引用了相同的东西。每个片段的两个适配器类都有不同数量的项目,GridView但第二个看起来和行为与第一个相同。任何帮助将非常感激!

4

2 回答 2

0

我讨厌回答我自己的问题,但这里是:

问题出在getItem方法上。它的工作原理如下:

public Fragment getItem(int position) {
    Fragment fragment1 = new FirstFragment();
    Fragment fragment2 = new SecondFragment();
    Fragment fragment3 = new ThirdFragment();

    if(position == 0){
       return fragment1;
    }
    else if (position == 1){
       return fragment2;
    }
    else{
       return fragment3;
    }
}

然后每个 (Number)Fragment() 与内部 Fragment 类相关

于 2013-05-25T20:25:14.793 回答
0

你从来没有读过section_number片段中的论点。

int section = getArguments().getInt(ARG_SECTION_NUMBER);
于 2013-05-24T23:24:59.737 回答