【问题标题】:setSupportActionBar toolbar cannot be applied to (android.widget.Toolbar) errorsetSupportActionBar 工具栏无法应用到 (android.widget.Toolbar) 错误
【发布时间】: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_width="match_parent"
    android:layout_height="wrap_content"
    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_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF">
    <!-- The main content view -->
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include
            android:id="@+id/app_bar"
            layout="@layout/tool_bar" />
    </RelativeLayout>
    <!-- Navigation Drawer -->
    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="220dp"
        android:layout_height="match_parent"
        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)

我该如何解决这个问题?

【问题讨论】:

    标签: android android-actionbar material-design 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 
    

    【讨论】:

    • Extends AppCompatActivity 给了我我遗漏的线索。
    【解决方案3】:

    要添加支持 Material Design 的 ToolBar,official documentation directions 可能是最好的选择。

    1. 添加v7 appcompat support library
    2. 让你的活动扩展AppCompatActivity

      public class MyActivity extends AppCompatActivity {
        // ...
      }
      
    3. 在 Manifest 中声明 NoActionBar

      <application
          android:theme="@style/Theme.AppCompat.Light.NoActionBar"
          />
      
    4. 将工具栏添加到 Activity 的 xml 布局中。

      <android.support.v7.widget.Toolbar
         android:id="@+id/my_toolbar"
         android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
         ...
         />
      
    5. 在活动的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_width="match_parent"
              android:layout_height="wrap_content"
              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程序

                【讨论】:

                  猜你喜欢
                  • 2022-01-11
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-01-22
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-03-24
                  相关资源
                  最近更新 更多