2017-06-20 182 views
0

我有一個持有viewpager的片段,我無法通過在任何viewpager片段中調用「getActivity()」來獲取活動/上下文。如何在viewpager片段中託管viewpager的片段獲取活動上下文?

我有一個onCreateView和onAttach內的活動的有效上下文,但沒有在我滑過viewpager內的片段後。我在onCreateView中創建的所有需要​​上下文的成員也都是null(在滑動之後)。

我試圖將活動存儲在一個成員中,但這也沒有工作,我也不喜歡存儲上下文,因爲可能的內存泄漏。

有人可以幫助我嗎?

在此先感謝!

回答

0

我解決它....

getActivity()返回null我開始添加的圖像片段的意圖之後。選擇一個圖像後,我的FragmentPAgerAdapter中的方法「getItem(int position)」再次被調用,並且我在那裏創建了一個新的Fragment,因此在一個無效的片段上調用了「getActivity()」。

它是這樣的:

public class SectionsPagerAdapter extends FragmentPagerAdapter 
{ 
    public SectionsPagerAdapter(FragmentManager fm) 
    { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) 
    { 
     switch (position) 
     { 
      case 0: return MyFragment.newInstance("MyFragment"); 

現在是這樣的:

公共類SectionsPagerAdapter延伸FragmentPagerAdapter { 公共SectionsPagerAdapter(FragmentManager FM) { 超級(FM); }

@Override 
    public Fragment getItem(int position) 
    { 
     switch (position) 
     { 
      case 0: if (mFragment==null) 
         mFragment=new MyFragment(); 
        return mFragment; 

所以現在我回來已經建立的片段,而不是另外一個。