首页 > 解决方案 > 在 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'
}

标签: androidandroid-fragmentsandroid-actionbarandroid-actionbar-compat

解决方案


推荐阅读