1

FragmentPagerAdapterを使用してViewPagerでListFragmentを使用しようとしています。ページャーは、ListFragmentの2つのインスタンスで構成されています。ViewPagerコントロールは機能し、フラグメント間をスワイプできますが、両方のページに同じListFragmentが表示されます。ViewPagerのgetItem()メソッドはListFragmentの2つの異なるインスタンスを作成しているようですが、両方のページに対して2番目のインスタンスのみを表示します。コードは次のとおりです。

// FragmentPagerAdapter
private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {      
    public MyFragmentPagerAdapter(FragmentManager fm)   {
        super(fm);
    }

    @Override
    public Fragment getItem(int index) {
        Log.i("Page: ", index + "");
        return PageFragment.newInstance(pages.get(index));
        // pages is an ArrayList<ArrayList<Restaurant>> pages
    }

    @Override
    public int getCount() {
        return numberOfPages;
    }
}


// ListFragment
public class PageFragment extends ListFragment {

    private static ArrayList<Restaurant> restaurantsList;

    public static PageFragment newInstance(ArrayList<Restaurant> restaurantsList) {
        PageFragment pageFragment = new PageFragment();
        pageFragment.setRestaurantsList(restaurantsList);
        return pageFragment;
    }

    @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.fragment, container, false);      
    setListAdapter(new RestaurantArrayAdapter(getActivity().getBaseContext(), getRestaurantsList()) );
    return view;
    }


    private void setRestaurantsList(ArrayList<Restaurant> list)
    {
        restaurantsList = list;
    }

    private ArrayList<Restaurant> getRestaurantsList()
    {
        return this.restaurantsList;
    }
}
4

1 に答える 1

2

問題は、配列メンバーを「静的」として宣言したことです。

private static ArrayList<Restaurant> restaurantsList;

静電気をなくすと大丈夫です。

于 2013-01-12T20:49:38.090 に答える