片段中不支持getSupportActionBar()

时间:2018-11-01 11:25:59

标签: android

我正在尝试更改片段中的操作栏背景颜色,并且我正在使用

ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ffffff"));
        getSupportActionBar().setBackgroundDrawable(colorDrawable);

更改颜色但在片段中
 getSupportActionBar()  对我来说还没有解决`

3 个答案:

答案 0 :(得分:0)

您必须需要这样的东西:

((MainActivity) getActivity()).getSupportActionBar().setBackgroundDrawable(colorDrawable);

答案 1 :(得分:0)

需要从您的活动中访问

getSupportActionBar。要从片段访问它,可以执行以下操作:

private Context _context;

...

@Override
public void onAttach(Context context)
{
    super.onAttach(context);
    _context = context;
}

...

((AppCompatActivity)_context).getSupportActionBar().setBackgroundDrawable(colorDrawable);

从onAttach获取Context是个好习惯,因为稍后调用getContext()getActivity()可能会导致NullPointerException

答案 2 :(得分:0)

首先请确保您已实现支持依赖项

在依赖项下的build.gradle(模块级别,而非应用程序级别)中,检查您是否具有正确的权限:

   //Verify the version is matching your other  support dependency versions 
 implementation "com.android.support:support-v4:28.0.0"

然后您可以通过以下示例访问片段:

private ActionBar supportActionBar;
...
//inside on attach
supportActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();

还请确保您已导入正确的SupportActionBar