为什么null值显示在android的actionbar中?

时间:2015-08-25 04:30:51

标签: android android-layout android-fragments null

enter image description here

我正在制作标签视图的简单演示。但是在第一行我得到空指针异常。我从这个方法 getActionBar() 获得null值为什么? 我会和你分享我的课程

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'
}

3 个答案:

答案 0 :(得分:1)

您的MainActivity需要延长AppCompatActivity(而不是FragmentActivity)。此外,您需要使用其他方法来获取ActionBar

actionBar = getSupportActionBar()

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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