setSupportActionBar toolbar cannot be applied to (android.widget.Toolbar) 错误
setSupportActionBar toolbar cannot be applied to (android.widget.Toolbar) error
我一直在寻找答案,我尝试了很多可能的解决方案,但似乎没有任何效果..
我正在尝试在 this tutorial 之后设置一个 Material 操作栏。
这是我的代码:
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 !!!!
错误:
setSupporActionBar (android.support.v7.widget.Toolbar) in ActionBarActivity cannot be applied to (android.widget.Toolbar)
我该如何解决这个问题?
在您的 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 和
import android.support.v7.widget.Toolbar
要添加支持Material设计的工具栏,official documentation directions可能是最好的选择。
- 添加 v7 appcompat support library.
使您的 activity 扩展 AppCompatActivity
。
public class MyActivity extends AppCompatActivity {
// ...
}
在清单中声明 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"
...
/>
在 activity 的 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);
}
注意: 您必须在 activity.
中导入以下内容
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
证明您的清单声明包含 android:theme="@style/AppTheme.NoActionBar" 标记,如下所示:
<activity
android:name=".PointsScreen"
android:theme="@style/AppTheme.NoActionBar">
</activity>
在您 MainActivity.java 导入 android .support.v7.widget.Toolbar 插入 java 程序
import android.support.v7.widget.Toolbar;
将其导入您的 java class
我之前使用的是这段代码:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
并扩展了 AppCompatActivity,但我遇到了同样的错误。
因此,我没有使用 Toolbar class,而是导入了下面的 class,它对我有用:
android.support.v7.widget.Toolbar
将导入 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 toolbar = findViewById(R.id.toolbar);
setSupportActionBar(工具栏);
随着在 Studio 3.0+ 中添加 androidx,工具栏兼容性现在位于新库中,可以像这样访问
import androidx.appcompat.widget.Toolbar
对于3以上的Android版本:
import androidx.appcompat.widget.Toolbar;
对于Android版本3以下:
import android.widget.Toolbar;
class必须继承AppCompatActivity才能解决setSuppertActionBar无法识别的问题
改变一下
import android.widget.Toolbar;
到
import android.support.v7.widget.Toolbar;
可以使用
轻松更改工具栏的名称
android:label="My Activity"
在您的清单文件中。
我刚刚查看清单并找到
android:label
根据具体情况帮助更改activity,希望大家试一试
我一直在寻找答案,我尝试了很多可能的解决方案,但似乎没有任何效果..
我正在尝试在 this tutorial 之后设置一个 Material 操作栏。
这是我的代码:
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 !!!!
错误:
setSupporActionBar (android.support.v7.widget.Toolbar) in ActionBarActivity cannot be applied to (android.widget.Toolbar)
我该如何解决这个问题?
在您的 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 和
import android.support.v7.widget.Toolbar
要添加支持Material设计的工具栏,official documentation directions可能是最好的选择。
- 添加 v7 appcompat support library.
使您的 activity 扩展
AppCompatActivity
。public class MyActivity extends AppCompatActivity { // ... }
在清单中声明
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" ... />
在 activity 的
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); }
注意: 您必须在 activity.
中导入以下内容import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
证明您的清单声明包含 android:theme="@style/AppTheme.NoActionBar" 标记,如下所示:
<activity
android:name=".PointsScreen"
android:theme="@style/AppTheme.NoActionBar">
</activity>
在您 MainActivity.java 导入 android .support.v7.widget.Toolbar 插入 java 程序
import android.support.v7.widget.Toolbar;
将其导入您的 java class
我之前使用的是这段代码:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
并扩展了 AppCompatActivity,但我遇到了同样的错误。 因此,我没有使用 Toolbar class,而是导入了下面的 class,它对我有用:
android.support.v7.widget.Toolbar
将导入 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 toolbar = findViewById(R.id.toolbar); setSupportActionBar(工具栏);
随着在 Studio 3.0+ 中添加 androidx,工具栏兼容性现在位于新库中,可以像这样访问
import androidx.appcompat.widget.Toolbar
对于3以上的Android版本:
import androidx.appcompat.widget.Toolbar;
对于Android版本3以下:
import android.widget.Toolbar;
class必须继承AppCompatActivity才能解决setSuppertActionBar无法识别的问题
改变一下
import android.widget.Toolbar;
到
import android.support.v7.widget.Toolbar;
可以使用
轻松更改工具栏的名称android:label="My Activity"
在您的清单文件中。 我刚刚查看清单并找到
android:label
根据具体情况帮助更改activity,希望大家试一试