【问题标题】: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;
所以现在我返回的是已经创建的片段,而不是另一个片段。