setSupportActionBar工具栏无法应用于(android.widget.Toolbar)错误

HGR*_*GRC 48 android toolbar android-actionbar material-design

我一直在寻找答案,我已经尝试了很多可能的解决方案,但似乎没有什么工作..

我正在尝试按照本教程设置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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

最后我的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 !!!!
Run Code Online (Sandbox Code Playgroud)

错误:

ActionBarActivity中的setSupporActionBar(android.support.v7.widget.Toolbar)无法应用于(android.widget.Toolbar)

我怎样才能解决这个问题?

Moh*_*ngh 137

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 !!!!
Run Code Online (Sandbox Code Playgroud)

  • 使用"AppCompatActivity"而不是"ActionBarActivity",因为谷歌已将其折旧. (13认同)
  • 当我在 android 类中使用工具栏扩展 actionbaractivity setsupportActionBar(tool) 显示错误 setsupport toolbar v7 appdelegar 错误请帮助我 (2认同)

小智 22

在使用工具栏时,您应该扩展AppCompatActivity,然后导入android.support.v7.widget.Toolbar

  • 扩展`AppCompatActivity`给了我一些我不知道的线索. (3认同)

Sur*_*gch 15

要添加支持Material Design的ToolBar,官方文档说明可能是最好的.

  1. 添加v7 appcompat支持库.
  2. 让您的活动延伸AppCompatActivity.

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. NoActionBar在清单中声明.

    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在活动的xml布局中添加工具栏.

    <android.support.v7.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
    Run Code Online (Sandbox Code Playgroud)
  5. 打电话setSupportActionBar给活动onCreate.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
    }
    
    Run Code Online (Sandbox Code Playgroud)

注意:您必须在活动中导入以下内容.

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
Run Code Online (Sandbox Code Playgroud)


小智 5

通过在 Studio 3.0+ 中添加 androidx,工具栏兼容性现在在一个新库中,可以像这样访问

import androidx.appcompat.widget.Toolbar
Run Code Online (Sandbox Code Playgroud)


M E*_*B O 5

对于高于3的Android版本:

import androidx.appcompat.widget.Toolbar;
Run Code Online (Sandbox Code Playgroud)

对于低于3的Android版本:

import android.widget.Toolbar;
Run Code Online (Sandbox Code Playgroud)