使用 android studio 在 activity 中实现工具栏的正确方法

Correct way to implement a toolbar in activity using android studio

我在向我的应用程序添加工具栏时遇到问题。我从一个空 activity 开始。使用本教程 https://developer.android.com/training/appbar/setting-up and this tutorial https://m.youtube.com/watch?v=DMkzIOLppf4.

然而,尽管 implementation 'com.android.support:appcompat-v7:28.0.0' 添加到 build.gradle (Module:app) 中的依赖项,使用支持库似乎不起作用,因为我收到以下错误:

package android.support.v7.widget does not exist
import android.support.v7.widget.Toolbar;

我已经发现这可能是由于启用了 androidx,事实上,我发现

android.useAndroidX=true
android.enableJetifier=true

在 gradle.properties 中。但是,将两者都设置为 false 会出现以下错误:

ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 is also present at [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory). Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-24:19 to override.

但老实说,我不知道如何处理该错误消息...

你能告诉我添加工具栏的正确方法是什么吗?如果它启用了 androidx,你能指点我教程吗?反之亦然,如果它是通过 android.support.v7.widget,我需要做什么才能让它工作?

谢谢!

我想我找到了解决办法。 没有必要实施com.android.support:appcompat-v7:28.0.0。而是使用

androidx.appcompat.widget.Toolbar

在java-文件中你需要添加

import androidx.appcompat.widget.Toolbar;

并使用

设置工具栏
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
}

但是,如果更有经验的人可以验证这个解决方案是正确的,我会很高兴。