【问题标题】:How to get activity context in a viewpager's fragment if viewpager is hosted by a fragment?如果 viewpager 由片段托管,如何在 viewpager 的片段中获取活动上下文?
【发布时间】:2017-06-20 22:46:23
【问题描述】:

我有一个包含 viewpager 的片段,我无法通过在任何 viewpager 的片段中调用“getActivity()”来获取活动/上下文。

我在 onCreateView 和 onAttach 中有一个有效的活动上下文,但在我滑动到 viewpager 内的片段之后没有。我在 onCreateView 中创建的所有需要​​上下文的成员也是空的(滑动后)。

我尝试将活动存储在成员中,但这也不起作用,而且我也不太喜欢存储上下文,因为可能存在内存泄漏。

有人可以帮我解决这个问题吗?

提前致谢!

【问题讨论】:

    标签: android android-viewpager fragment


    【解决方案1】:

    我解决了....

    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) { 超级(调频); }

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多