我尝试使用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);
}
}
答案 0 :(得分:1)
步骤1:删除context = getSherlockActivity().getApplicationContext();
第2步:将context.findViewById
替换为getActivity().findViewById
步骤3:将所有剩余的context
替换为getActivity()
步骤4:删除onActivityCreated()
实施,因为它没有做任何事情
步骤5:解决您永远不会再使用getApplicationContext()
的问题,除非您明确知道在特定情况下您需要它的原因