在Android Studio上构建带选项卡的滑动视图的mainActivity中出现空指针错误

在Android Studio上构建带选项卡的滑动视图的mainActivity中出现空指针错误,android,android-fragments,android-actionbar,android-viewpager,swipeview,Android,Android Fragments,Android Actionbar,Android Viewpager,Swipeview,我希望在我的应用程序中构建带标签的滑动视图功能,方法是遵循我在论坛的一个答案上找到的教程 [ 但我一直遇到一个空指针错误,我似乎无法找到原因。我严格遵守了教程,还阅读了其他关于论坛上滑动视图的类似问题。编码实际上与我目前的编码完全相同。但每次运行模拟器时,我都会遇到这个错误 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tim.swipe/com.example.tim.swipe.

我希望在我的应用程序中构建带标签的滑动视图功能,方法是遵循我在论坛的一个答案上找到的教程

[

但我一直遇到一个空指针错误,我似乎无法找到原因。我严格遵守了教程,还阅读了其他关于论坛上滑动视图的类似问题。编码实际上与我目前的编码完全相同。但每次运行模拟器时,我都会遇到这个错误

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tim.swipe/com.example.tim.swipe.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActionBar$Tab android.app.ActionBar.newTab()' on a null object reference
我假设这与ActionBar有关,但是教程和其他来源的代码实际上是相同的

MainActivity.java

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {



ViewPager viewPager;
TabsPagerAdapter adapter;
ActionBar actionBar;
String[] tabs =  { "FragmentA", "FragmentB", "FragmentC" };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    adapter = new TabsPagerAdapter(getSupportFragmentManager());

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




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

}

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

}

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

}
activity_main.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
碎片

public class FragmentA extends Fragment {


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


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_a, container, false);

    return rootView;
}

FragmentB和FragmentC的代码相同,只是布局不同。

将此变量添加到类中:

private TabsPagerAdapter mAdapter;
将onCreate方法更改为:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setNavigationMode(actionBar.NAVIGATION_MODE_TABS);

    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }
}
我也犯了这个错误。 这里有一个解决方案,它对我有效

添加

getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
之前

setContentView
确保
清单中的主题支持操作栏

还要确保你的Android版本高于11

希望这对你有用

您可以参考下面的原始答案。

发布您的代码,这样我们就可以看到错误发生的地方。如果我看不到MainActivity中有什么内容,因为您还没有发布代码,请发布它。错误是“无法解析方法”getSupportActionBar()“我已经添加了这一点,但仍然收到相同的错误消息。它还说setNavigationMode已被弃用。我正在使用API级别21进行编译,如果这有任何帮助的话。我已将FragmentActivity更改为ActionBarActivity,然后使用
actionBar=getSupportedActionBar()
这允许应用程序运行,这似乎绕过了java.lang空指针问题。但现在我遇到了一个问题,当滑动到下一个片段时,顶部的aciton栏不会随之改变。
setContentView