2017-06-20 87 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; 

所以现在我回来已经建立的片段,而不是另外一个。