片段内的ViewPagerIndicator:带适配器的NullPointer

时间:2012-04-15 21:00:29

标签: android android-fragments android-viewpager

我尝试使用this answer在片段like so中使用带指示符的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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

第2步:将context.findViewById替换为getActivity().findViewById

步骤3:将所有剩余的context替换为getActivity()

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

步骤5:解决您永远不会再使用getApplicationContext()的问题,除非您明确知道在特定情况下您需要它的原因