2

我尝试使用此答案在片段内使用带有指示器的 ViewPager,如下所示。(只是一个模型)。
有改变片段的导航微调器。每个“页面”都将包含一个 ListView。

所以基本上我正在寻找:
SherlockFragmentActivity -> SherlockFragment -> ViewPager -> ListView

但是,当我尝试实现在答案中看到的内容时, findViewById(); 出现错误。
我认为这是因为我没有得到正确的“上下文”。

这是我的片段:

public class HomeViewFragment extends SherlockFragment {

    private ViewPager mPager;
    private HomePagerAdapter mAdapter;
    private TitlePageIndicator mIndicator;
    private Context context;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        context = getSherlockActivity().getApplicationContext();            

        mAdapter = new HomePagerAdapter(context);

        mPager = (ViewPager)context.findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mIndicator = (TitlePageIndicator)context.findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
    } 

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }
}
4

1 回答 1

1

步骤#1:删除context = getSherlockActivity().getApplicationContext();

步骤#2:替换context.findViewByIdgetActivity().findViewById

第 3 步:将所有剩余的 替换contextgetActivity()

步骤#4:删除你的onActivityCreated()实现,因为它没有做任何事情

第 5 步:下定决心,getApplicationContext()除非您明确知道在特定情况下为什么需要它,否则您将永远不会再使用它

于 2012-04-15T21:10:17.187 回答