我正在尝试更改片段中的操作栏背景颜色,我正在使用
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