setSupportActionBar 工具栏无法应用到 (android.widget.Toolbar) 错误
Posted
技术标签:
【中文标题】setSupportActionBar 工具栏无法应用到 (android.widget.Toolbar) 错误【英文标题】:setSupportActionBar toolbar cannot be applied to (android.widget.Toolbar) error 【发布时间】:2015-05-15 13:33:29 【问题描述】:我一直在寻找答案,并尝试了许多可能的解决方案,但似乎没有任何效果..
我正在尝试在this tutorial 之后设置一个 Material Action Bar。
这是我的代码:
tool_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@color/ColorPrimary"
android:elevation="4dp">
</android.support.v7.widget.Toolbar>
activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_
android:layout_
android:background="#FFFFFF">
<!-- The main content view -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/tool_bar" />
</RelativeLayout>
<!-- Navigation Drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_
android:layout_
android:layout_gravity="left"
android:background="#1C1C1C"
android:divider="@android:color/darker_gray"
android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
最后是我的activity.java:
import android.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toolbar;
public class rutaActivity extends ActionBarActivity
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ruta);
getSupportActionBar().hide();//Ocultar ActivityBar anterior
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar); //HERE'S THE PROBLEM !!!!
错误:
ActionBarActivity中的setSupporActionBar(android.support.v7.widget.Toolbar)不能应用到(android.widget.Toolbar)
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:在您的Activity.java
中导入android.support.v7.widget.Toolbar
而不是android.widget.Toolbar
:
import android.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.Toolbar;
public class rutaActivity extends AppCompactActivity
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ruta);
getSupportActionBar().hide();//Ocultar ActivityBar anterior
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar); //NO PROBLEM !!!!
更新:
如果您使用的是androidx,请替换
import android.support.v7.widget.Toolbar;
import android.support.v7.app.AppCompatActivity;
使用更新的导入
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.app.AppCompatActivity;
【讨论】:
使用AppCompatActivity
而不是 ActionBarActivity
,因为 Google 已经对其进行了贬值。
当我在 android 类中使用工具栏时扩展 actionbaractivity setsupportActionBar(tool) 显示错误 setsupport toolbar v7 appdelegar 错误请帮助我【参考方案2】:
在使用工具栏时,您应该扩展 AppCompatActivity 和
import android.support.v7.widget.Toolbar
【讨论】:
ExtendsAppCompatActivity
给了我我遗漏的线索。【参考方案3】:
要添加支持 Material Design 的 ToolBar,official documentation directions 可能是最好的选择。
-
添加v7 appcompat support library。
让你的活动扩展AppCompatActivity
。
public class MyActivity extends AppCompatActivity
// ...
在 Manifest 中声明 NoActionBar
。
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
将工具栏添加到 Activity 的 xml 布局中。
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
...
/>
在活动的onCreate
中调用setSupportActionBar
。
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
注意:您必须在活动中导入以下内容。
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
【讨论】:
忘记扩展 AppCompatActivity 并在 setSupportActionBar 上获得未解决的引用。谢谢! @AbhinavSaxena 停止向其他人的答案发送垃圾邮件,其中包含指向另一个答案的链接。【参考方案4】:对于 3 以上的 Android 版本:
import androidx.appcompat.widget.Toolbar;
对于 3 以下的 Android 版本:
import android.widget.Toolbar;
【讨论】:
【参考方案5】:随着在 Studio 3.0+ 中添加 androidx,工具栏兼容性现在在一个新库中,可以像这样访问
import androidx.appcompat.widget.Toolbar
【讨论】:
【参考方案6】:确认您的 Manifest 声明包含 android:theme="@style/AppTheme.NoActionBar" 标记,如下所示:
<activity
android:name=".PointsScreen"
android:theme="@style/AppTheme.NoActionBar">
</activity>
【讨论】:
【参考方案7】:将 import android.support.v7.widget.Toolbar 添加到导入列表可解决此问题。
然后添加工具栏小部件布局文件:
<android.support.v7.widget.Toolbar
android:id="@+id/list_toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
/>
在java代码的onCreate方法中
//call to
Tootbar 工具栏 = findViewById(R.id.toolbar); setSupportActionBar(工具栏);
来源:https://developer.android.com/training/appbar/up-action
【讨论】:
这无济于事。 试过了,对我有用。注意import语句import android.support.v7.widget.Toolbar和工具栏【参考方案8】:类必须是AppCompatActivity的扩展才能解决setSuppertActionBar无法识别的问题
【讨论】:
这真是天才!【参考方案9】:只是改变
import android.widget.Toolbar;
到
import android.support.v7.widget.Toolbar;
【讨论】:
【参考方案10】:工具栏的名称可以使用
轻松更改android:label="My Activity"
在您的清单文件中。 我只是通过 Manifest 并找到了
android:label
帮助根据具体活动改变,希望大家试一试
【讨论】:
这是我发现的最复杂的方法,对你有帮助吗?【参考方案11】:我以前使用过这段代码:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
也扩展了 AppCompatActivity,但我遇到了同样的错误。 因此,代替使用 Toolbar 类,我导入了以下类,它对我有用:
android.support.v7.widget.Toolbar
【讨论】:
【参考方案12】:import android.support.v7.widget.Toolbar;
将其导入您的 java 类
【讨论】:
【参考方案13】:在你MainActivity.java中导入android .support.v7.widget.Toolbar插入的java程序
【讨论】:
以上是关于setSupportActionBar 工具栏无法应用到 (android.widget.Toolbar) 错误的主要内容,如果未能解决你的问题,请参考以下文章
恢复片段时使用 setSupportActionBar() 设置工具栏
如何在 android studio 中使用 setSupportActionBar 功能?
无法解析资源@style.AppTheme.AppBarOverlay [重复]