android - 在 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 版,一切正常。
- 不想和他们一起工作,因为这种情况我无法访问更改操作栏,这是个大问题。
- 通过创建示例新项目(使用 Navigation Drawer 活动类型)进行测试有同样的问题。
额外项目信息:
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'
}
解决方案
推荐阅读
- python - ViewSet、ModelViewSet、APIView的区别
- c# - Visual Studio C# ODBC Sharepoint 连接器只读字段错误
- flutter - 将数据从屏幕传递到抽屉颤动
- sql - 如何在迁移文件中添加新列
- django-rest-framework - 如何使用 drf_yasg 显示排序
- instagram - Instagram 图形 api 获得关注和追随者数量
- reactjs - 如何解决 testing-library-react 中的“更新未包含在 act() 中”警告?
- python - 在 tkinter 中重复创建和删除对象(例如矩形)时间延迟
- asp.net-core-mvc - MVC 核心验证 - 最初呈现为有效
- c# - 使用枚举的计算器