FadingActionbar中的ActionBar为null

时间:2018-06-29 06:50:24

标签: java android android-actionbar

我使用这个图书馆 FadingActionBar

这是我的风格:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/Widget.ActionBar</item>
        <item name="actionBarStyle">@style/Widget.ActionBar</item>

    </style>

    <style name="AppTheme.TranslucentActionBar">
        <item name="android:actionBarStyle">@style/Widget.ActionBar.Transparent</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="actionBarStyle">@style/Widget.ActionBar.Transparent</item>
        <item name="windowActionBarOverlay">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    </style>

这是我的使用AppTheme.TranslucentActionBar作为主题的活动

public class MainActivity extends AppCompatActivity {
    private ActionBar mActionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        FadingActionBarHelper helper = new FadingActionBarHelper()
                .actionBarBackground(R.drawable.ab_background)
                .headerLayout(R.layout.header)
                .contentLayout(R.layout.activity_scrollview);


        setContentView(helper.createView(MainActivity.this));
        helper.initActionBar(MainActivity.this);
    }
}

我的确切错误是这样:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setBackgroundDrawable(android.graphics.drawable.Drawable)' on a null object reference

当我将AppCompatActivity转换为Activity并更改AppTheme样式时,例如:

 <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

我的问题已解决,但之后我想使用自定义操作栏并使用

getsupportActionBar  

android.support.v7.widget.Toolbar

并且不能将主题与Activity一起使用。请告诉我为什么我的ActionBar为null并得到提及的错误。


已解决

此自定义FadingActionBarHelper解决了问题

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.example.fereshteh.aroosshahr.R;
import com.manuelpeinado.fadingactionbar.FadingActionBarHelperBase;

public class MyFadingActionBarHelper extends FadingActionBarHelperBase {
    private ActionBar mActionBar;

    @Override
    protected int getActionBarHeight() {
        return mActionBar.getHeight();
    }

    @Override
    protected boolean isActionBarNull() {
        return mActionBar == null;
    }

    @Override
    protected void setActionBarBackgroundDrawable(Drawable drawable) {
        mActionBar.setBackgroundDrawable(drawable);
    }


    @Override
    public void initActionBar(Activity activity) {
        mActionBar = ((AppCompatActivity) activity).getSupportActionBar();


        mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        mActionBar.setDisplayShowCustomEnabled(true);
        mActionBar.setCustomView(R.layout.toolbar_fading);
        View view = mActionBar.getCustomView();
//        toolbar_title = (MyTV) view.findViewById(R.id.toolbar_title);

        super.initActionBar(activity);
    }
}

0 个答案:

没有答案