问题描述
我知道有很多关于在 Android 应用中隐藏操作栏的文章和帖子,其中大部分都可以正常工作,但是 androidx.appcompat:appcompat:1.3.0 怎么样?
我开发了一个使用 appcompat:1.2.0 的 Android 应用程序,使用下面的代码,我可以访问显示/隐藏或设置标题,并且运行良好。
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
((AppCompatActivity) getActivity()).getSupportActionBar().hide();//This Line
binding = FragmentLoginBinding.inflate(inflater,container,false);
//((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("my title"); and this line
View root = binding.getRoot();
.....
}
但是当我更新项目以使用 'androidx.appcompat:appcompat:1.3.0'
该代码不再起作用并导致应用程序崩溃。经过一些测试,我发现这一行的结果始终为空,因此,发生了应用程序崩溃。
((AppCompatActivity) getActivity()).getSupportActionBar();
(requireActivity() as AppCompatActivity).supportActionBar?.hide()
和
(activity as AppCompatActivity).supportActionBar?.hide()
和
ActionBar supportActionBar = ((AppCompatActivity) requireActivity()).getSupportActionBar();
if (supportActionBar != null)//always is null
supportActionBar.hide();
和
this.getSupportActionBar().hide();
我想知道如何在“androidx.appcompat:appcompat:1.3.0”中处理? 如果降级到 1.2.0 版,一切正常。
- 不想和他们一起工作,因为这种情况我无法访问更改操作栏,这是个大问题。
- 通过创建示例新项目(使用导航抽屉活动类型)进行测试,存在同样的问题。
额外的项目信息:
Android Studio: 4.2.1
Android Gradle Plugin Version: 4.2.1
Gradle Version: 6.7.1
minSdkVersion 23
targetSdkVersion 30
compileSdkVersion 30
buildToolsversion '30.0.2'
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.navigation:navigation-fragment:2.3.5'
implementation 'androidx.navigation:navigation-ui:2.3.5'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)