2012-07-13 95 views
1

爲此編寫標題很困難。我目前所做的是重用一個片段類來在ViewPager中創建多個ListFragments。 ListFragments的佈局都是一樣的,所以只有一個佈局和一個片段作爲基礎看起來是一個很好的選擇。 但是,我希望能夠訪問每個片段的視圖,以設置一些片段值,如標題,名稱和其他內容。我有一個問題,這是事實,每當我嘗試通過覆蓋片段的onViewCreated方法訪問一個TextView,在我看來,唯一的片段得到更新是鏈中的第一個。現在從ViewPager中的多個片段實例化訪問視圖

,我做什麼實例化和連接片段是這樣的:

private void initPager() { 
    mFragments = new Vector<Fragment>(); 
    int[] listIds = 3; 
    for(int i = 0; i < listIds.length; i++) { 
     Fragment fragment = new ListsFragment(listIds[i]); 
     mFragments.add(fragment); 
    } 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    for(int i = 0; i < mFragments.size(); i++) { 
     fragmentTransaction.add(R.id.viewpager, mFragments.get(i)); 
    } 
    fragmentTransaction.commit(); 

    mPagerAdapter = new ListsPagerAdapter(fragmentManager, mFragments); 
    mPager = (ViewPager) super.findViewById(R.id.viewpager); 
    mPager.setAdapter(mPagerAdapter); 
} 

片段onViewCreated()的代碼是這樣的:

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    TextView textListTitle = (TextView) getActivity().findViewById(R.id.text_list_title); 
      String title = "test"; 
    textListTitle.setText(listTitle); 
} 

當在日誌中尋找我看到每一個片段被分開實例化,逐一經歷每個生命週期。但是,獲得「測試」字符串的唯一片段是第一個。

我錯過了什麼?

+0

沒有理由在這裏使用'Vector' ...只是使用'ArrayList' :) – 2012-07-25 02:59:19

+0

另外...這將不會編譯:'int [] listIds = 3;'...所以我老實說不知道大聲笑 – 2012-07-25 03:03:20

回答

0

您應該在某種FragmentPagerAdapter中實例化Fragment

+0

完全正確。之後我加入了FragmentPagerAdapter來正確處理這個問題。 – 2012-12-03 20:14:45

相關問題