在 Android Studio 中,在 appcompat:1.3.0 中访问显示/隐藏/更改标题操作栏发生了什么?

问题描述

我知道有很多关于在 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 (将#修改为@)