在Android中获取片段上下文

在Android中获取片段上下文,android,fragment,Android,Fragment,我的活动有5个片段。我想访问片段的一个上下文,但当我使用getActivity()方法访问上下文时,我的代码对每个片段都有效。如何专门化每个片段上下文?(我的意思是只触及片段上下文) 如果查看适配器类,SampleFragmentPagerAdapter,您会发现您将返回一个新的PageFragment五次: @Override public Fragment getItem(int position) { return PageFragment.newInstance(position

我的活动有5个片段。我想访问片段的一个上下文,但当我使用
getActivity()
方法访问上下文时,我的代码对每个片段都有效。如何专门化每个片段上下文?(我的意思是只触及片段上下文)


如果查看适配器类,
SampleFragmentPagerAdapter
,您会发现您将返回一个新的
PageFragment
五次:

@Override
public Fragment getItem(int position) {
    return PageFragment.newInstance(position + 1);
}
如果您查看有关的文档,它会指出:

返回与指定位置关联的片段

因此,您将创建五个列表

如果您想为每个页面创建单独的片段,可以使用
开关
语句:

@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return PageFragment.newInstance(position + 1);
            break;
        case 1:
            return PageFragment1.newInstance(position + 1);
            break;
        case 2:
            return PageFragment2.newInstance(position + 1);
            break;
        //etc...
    }
}

好吧,如果我得到了你想要的,你想要访问每个片段,能够修改它的内容等等,对吗

首先,在您的
活动中
(哪一个包含fragments pager…),您必须稳定页面,才能访问它们,如下所示:

FirstFragment mFirstFragment;
SecondFragment mSecondFragment;
.
.
.
因此,在
活动的
onCreate()方法中执行以下操作:

mFirstFragment = (FirstFragment) adapter.instantiateItem(pager,0);
mSecondFragment = (SecondFragment) adapter.instantiateItem(pager, 1);
请注意,
pager
ViewPager
adapter
是您的
FragmentPagerAdapter

为什么它有用

这是因为现在您可以分别在每个片段中更改视图,例如:

mSecondFragment.mButton.setVisibility(view.VISIBLE);


例如,假设第一个片段中有一个
按钮mButton
,第二个片段中有一个
TextView mTextView1

很难理解你的意思。我想我以前从未遇到过这个问题,我经常使用
Fragment
s。您的
活动是否同时附加了多个片段?对不起,我的英语是,我使用fragmentpageradapter(制表符-查看页面),我在一个活动中有5个片段。当我为第一个片段设置listview时,它应用了所有这些片段(因为对于上下文,我使用getActivity方法)。我该如何处理它呢?片段没有自己的上下文,它们都使用活动上下文来表示它们所在的活动。听起来,无论你想要实现什么,你都需要使用不同的方法。谢谢你的澄清。你正在膨胀的五个片段是同一个类吗?问题是:为什么?为什么每个片段都需要特定的上下文?我不确定你是否理解上下文的含义?非常感谢PPartisan@Bad0没问题。如果我的回答解决了您的问题,请接受/投票:
mSecondFragment.mButton.setVisibility(view.VISIBLE);
mFirstFragment.mTextView1.setText("hello, its my second fragment's textview");