无法解析方法setSupportActionBar(androidx.appcompat.widget.Toolbar)

时间:2019-04-04 23:53:21

标签: android android-actionbar android-toolbar

我正在使用androidx,并且试图在Mainactivity中设置工具栏,以便可以添加菜单项。

我到处搜索过,但似乎找不到解决方法 尝试过implementation 'com.android.support:appcompat-v7:28.0.0'

Mainactivity.class

import androidx.appcompat.widget.Toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

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

activity_main.xml

<androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            style="@style/HeaderBar"
            app:layout_scrollFlags="scroll|enterAlways" />

styles.xml

<style name="HeaderBar">

    <item name="android:background">@color/colorPrimaryDark</item>
</style>

4 个答案:

答案 0 :(得分:2)

问题必须来自以下事实:您在MainActivity类中引用的工具栏是(android.widget)中的工具栏小部件,如以下链接所示:

Click to see the image for the wrong one

代替(androidx.appcompact.widget)中的工具栏,如以下链接所示:

Click to see the image for the correct one

因此,在MainActivity类中键入“工具栏”时,请确保放慢速度并检查您所引用的工具栏是否为(androidx.appcompat.widget)。

答案 1 :(得分:1)

我遇到了同样的问题。我在Kotlin中使用。
与“ com.google.android.material.material:1.1.0-alpha06”集成

fragment.xml

<androidx.appcompat.widget.Toolbar>
   android:id="@+id/toolbar"
   ...
</androidx.appcompat.widget.Toolbar>

片段

activity?.setActionBar(toolbar)

错误: setActionBar(必填:android.widget.Toolbar),但我在Kotlin中找不到setSupportActionBar

如果我更改小部件

<android.widget.Toolbar>
       android:id="@+id/toolbar"
       ...
</android.widget.Toolbar>

片段:确定

activity?.setActionBar(toolbar)

答案 2 :(得分:1)

我在文档中找不到太多,它通过以下方式为我工作:

  1. 在布局和活动中,而不是使用androidx,请使用appcompat工具栏小部件。
  2. 在活动的setSupportActionBar()方法中使用onCreate()代替<com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> //your views here </Toolbar> </com.google.android.material.appbar.AppBarLayout>
  3. 在AndroidManifest中为您的活动设置NoActionBar主题,以避免干扰您的自定义工具栏。

在您的layout.xml中

android.widget.Toolbar toolbar = findViewById(R.id.toolbar);
setActionBar(toolbar);

活动中

android:theme="@style/Theme.AppCompat.NoActionBar"

在AndroidManifest.xml中声明了您的活动

{{1}}

答案 3 :(得分:0)

在创建扩展了FragmentActivity (androidx.appcompat.app.FragmentActivity)的Google Maps Activity时,我也遇到了这个问题。为了解决这个问题, 确保您的活动扩展了AppCompatActivity (androidx.appcompat.app.AppCompatActivity)

还要检查您的gradle.properties并确保其中列出了android.useAndroidX=trueandroid.enableJetifier=true