0

上获取nullpointerexception我正在将选项卡添加到片段中的操作栏。但是,当我试图启动该片段,抛出一个空指针异常在getActionBar()

这之后我的应用程序崩溃是错误

Log

的Home.java文件是这样的:

public class Home extends Fragment implements ActionBar.TabListener { 

private ViewPager viewPager; 
private TabPagerAdapter tabPagerAdapter; 
private ActionBar actionBar; 
private FragmentActivity fragmentActivity; 

private String[] tabs ; 

public Home() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_home,container,false); 
    fragmentActivity = new FragmentActivity(); 

    tabs = getResources().getStringArray(R.array.hometabs); 
    viewPager = (ViewPager)rootView.findViewById(R.id.pager); 
    actionBar = fragmentActivity.getActionBar(); 
    tabPagerAdapter = new TabPagerAdapter(fragmentActivity.getSupportFragmentManager()); 

    viewPager.setAdapter(tabPagerAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    for(String tab_name: tabs){ 
     actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this)); 
    } 

    return rootView; 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    getActivity().setTitle("Home"); 
} 

@Override 
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 

} 

@Override 
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

} 

@Override 
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

} 
} 

线路号码40是actionbar = fragmentActivity.getActionBar();

有谁能告诉我为什么我面临这个问题?而不是

回答

5

actionBar = fragmentActivity.getActionBar(); 

使用:

actionBar = getActivity().getActionBar(); 

初始化该活动的方式

fragmentActivity = new FragmentActivity(); 

不会提供一个有效的窗口装饰摆脱Activity操作栏。

+0

感谢更改onCreateView()方法。这工作。但还有一个问题。 现在,我得到了actionbar.setHomeButtonEnabled(false)中的空指针异常。为什么会发生? –

+0

尝试使用'getSupportActionBar()'...而不是'getActionBar()' – rafsanahmad007

0

如下

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
View rootView = inflater.inflate(R.layout.fragment_home,container,false); 
fragmentActivity = getActivity(); 

tabs = getResources().getStringArray(R.array.hometabs); 
viewPager = (ViewPager)rootView.findViewById(R.id.pager); 
actionBar = fragmentActivity.getActionBar(); 
tabPagerAdapter = new TabPagerAdapter(fragmentActivity.getSupportFragmentManager()); 

viewPager.setAdapter(tabPagerAdapter); 
actionBar.setHomeButtonEnabled(false); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

for(String tab_name: tabs){ 
    actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this)); 
} 

return rootView; 

}

相关问题