2015-03-13 191 views
26

另外Android Studio的问题在这里:setSupportActionBar工具栏错误

我一直在寻找一个答案,我已经尝试过很多方法,但似乎没有任何工作..

我试图建立下面这个教程材质操作栏:

http://www.android4devs.com/2014/12/how-to-make-material-design-app.html

这里是我的代码:

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:orientation="vertical" android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <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(机器人。 support.v7.widget.Toolbar)在ActionBarActivity cann中OT被应用到(android.widget.Toolbar)

我真的不知道该怎么做,在这种新...

回答

65

在您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 !!!! 
+0

它的工作!非常感谢 ! – HGRC 2015-03-13 15:31:14

+10

由于Google已将其折旧,因此请使用AppCompatActivity而不是ActionBarActivity。 – nyxaria 2015-08-09 17:25:10

+0

当我在工具栏中使用android类扩展actionbaractivity setsupportActionBar(工具)显示错误setsupport工具栏v7 appdelegar错误请帮助我 – Harsha 2015-08-12 12:47:32

18

在使用工具栏,你应该伸出AppCompatActivity,然后导入android.support.v7.widget.Toolbar

+1

延长'AppCompatActivity'给了我线索我失踪。 – 2016-08-24 11:53:13

8

,用于添加支持材料设计工具栏,该official documentation directions很可能是最好遵循。

  1. 添加v7 appcompat support library
  2. 使您的活动延伸到AppCompatActivity

    public class MyActivity extends AppCompatActivity { 
        // ... 
    } 
    
  3. 在清单声明NoActionBar

    <application 
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
        /> 
    
  4. 为您的活动的xml布局添加一个工具栏。

    <android.support.v7.widget.Toolbar 
        android:id="@+id/my_toolbar" 
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
        ... 
        /> 
    
  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); 
    } 
    

注:您必须导入活动如下。

import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
+0

忘记扩展AppCompatActivity并获取setSupportActionBar上的未解析引用。谢谢! – 2017-10-12 20:10:22

2

证明你的舱单申报包括机器人:主题= “@风格/ AppTheme.NoActionBar”标签,如下所示:

<activity 
    android:name=".PointsScreen" 
    android:theme="@style/AppTheme.NoActionBar"> 
</activity>