片段中不支持getSupportActionBar()



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

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

以改变颜色,但在片段中
getSupportActionBar()对我来说不是决心`

您必须需要这样的东西:

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

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

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

在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

相关内容

  • 没有找到相关文章

最新更新