为什么 android 中的 actionbar 显示空值?

why null value display in actionbar in android?

我正在制作选项卡视图的简单演示。但是在第一行我遇到了空指针异常。我从这个方法中得到空值 getActionBar() 为什么? 我会和你分享我的 class

import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
   ActionBar actionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionBar=getActionBar(); /// <- this is the line causing issue
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    }
    // ---------- methods ---------------//
}

我在行 actionBar=getActionBar();

上得到空值

这是我的清单文件和 style.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
    </style>

</resources>

app.grudle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.naveen.tabviewswipe"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
}

您的 MainActivity 需要扩展 AppCompatActivity(而不是 FragmentActivity)。此外,您需要使用不同的方法来获取 ActionBar:

actionBar = getSupportActionBar()

这是因为您正在使用支持库。

您应该扩展 ActionBarActivity 并使用 getSupportActionBar()

如果你想扩展 FragmentActivity,那么你需要使用非 appcompat 主题,即 Holo 来获取 actionbar

<!-- Base application theme. -->
<style name="AppTheme" parent="android:Theme.Holo">
    <!-- Customize your theme here. -->
</style>