我有一個ViewPager應用程序,它包含兩個片段:主片段和列表片段。如果列表中的某些內容被選中,則會引發活動中處理的事件。活動切換到主片段並調用「setSelectedItem」方法。在這個方法中, 我使用getView()來查找特定視圖,以根據所選項目更改文本。getView中的片段返回有時爲空
大部分時間它的工作,但有時getView返回null,我不知道爲什麼。
的pagerAdapter在活動的OnCreate中創建的:
public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}
這是活性的方法,該方法被稱爲:
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
尋呼機適配器在其構造產生兩個片段的情況下當從列表中選擇一個項目時:
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
最後th是在MainFragment在setSelectedItem方法行導致該問題:
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
我試過幾件事情我瞭解,但問題仍然存在不規則。
不幸的是,我有同樣的問題,並沒有解決方案。我的代碼亂七八糟if(getView()== null)return;在各個地方。如果你現在已經解決了這個問題,我會很感興趣。 – StackOverflowed
您可以分享將片段添加到fragmentmanager的代碼嗎?如果沒有爲片段調用onCreateView(片段生命週期的一部分),getView將返回null - 即片段尚未完全添加到活動中。 – PacificSky
你在哪裏調用「TextView s」?這是在公共視圖getView在片段? –