【发布时间】:2014-09-06 10:46:59
【问题描述】:
我正在尝试在片段中创建可滑动的标签。所以在 viewpager 中添加标签。但它给了我错误 当 actionBar.setHomeButtonEnabled(false) 作为空指针异常时无法进行活动。我正在尝试解决过去两天的问题但无法解决。请帮我解决它。请找到我的 Fragment 类。
公共类 HomeFragment 扩展了 Fragment 实现 ActionBar.TabListener{
View FaramentView;
private FragmentActivity context;
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Top Rated", "Games", "Movies" };
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
FaramentView = inflater.inflate(R.layout.home_fragment, null, false);
return FaramentView;
}
@Override public void onAttach(Activity activity) {
context = (FragmentActivity) activity;
super.onAttach(activity);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
// Initilization
viewPager = (ViewPager) FaramentView.findViewById(R.id.pager);
actionBar = context.getActionBar();
mAdapter = new TabsPagerAdapter(context.getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
public LayoutInflater getSystemService(String layoutInflaterService) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
你使用的是android.app.Activity还是android.support.v7.app.ActionBarActivity?
-
使用android.app.Activity
-
啊,我刚看到你的 FragmentActivity。如果您使用 FragmentActivity 我相信您需要使用 getSupportActionBar()
-
我正在使用 Fragment 我们可以在 Fragment 中制作标签
-
替换行 actionBar = context.getActionBar(); with actionBar = context.getSupportActionBar();
标签: android android-viewpager fragment