我一直在寻找答案,我尝试了很多可能的解决方案,但似乎没有任何效果......
我正在尝试在this tutorial之后设置材料操作栏。
这是我的代码:
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)
我该如何解决这个问题?
答案 0 :(得分:124)
在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 !!!!
答案 1 :(得分:22)
在使用工具栏时,您应该扩展AppCompatActivity和
import android.support.v7.widget.Toolbar
答案 2 :(得分:15)
要添加支持Material Design的工具栏,official documentation directions可能是最好的。
让您的活动延长SAMPLE RUN
Enter test score 80
Enter test score 70
Enter test score 90
Enter test score 88
Enter test score 0
The average is 82.000%
。
AppCompatActivity
在清单中声明public class MyActivity extends AppCompatActivity {
// ...
}
。
NoActionBar
在活动的xml布局中添加工具栏。
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
在活动<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
...
/>
中调用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);
}
答案 3 :(得分:2)
证明您的Manifest声明包含 android:theme =&#34; @ style / AppTheme.NoActionBar&#34; 标记,如下所示:
//Main class
class Main{
public static void main(String []args){
try{
Car c = carFactory.getCar("Axio");
c.print();
}catch(Exception e){
System.out.println(e);
}
}
}
//Car Interface
public interface Car{
public void print();
}
//Car Interface implementation class
class Axio implements Car{
public void print(){
System.out.println("Axio car is called...");
}
}
//Car Factory class
class carFactory{
public static Car getCar(String carName)throws Exception{
return (Car)Class.forName(carName).newInstance();
}
}
答案 4 :(得分:2)
对于高于3的android版本:
import androidx.appcompat.widget.Toolbar;`
对于3以下的Android版本:
import android.widget.Toolbar;
答案 5 :(得分:1)
将导入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
工具栏工具栏= findViewById(R.id.toolbar); setSupportActionBar(toolbar);
答案 6 :(得分:1)
必须扩展AppCompatActivity的类以解决无法识别setSuppertActionBar的问题
答案 7 :(得分:0)
import android.support.v7.widget.Toolbar;
将其导入您的Java类
答案 8 :(得分:0)
我以前使用的是这段代码:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
并扩展了AppCompatActivity,但是我遇到了相同的错误。 因此,代替使用工具栏类,我导入了以下类,它对我有用:
android.support.v7.widget.Toolbar
答案 9 :(得分:0)
我遇到了同样的问题。我的Logcat
说
java.lang.IllegalStateException:此活动已经有一个动作 窗户装饰提供的酒吧
我已经有一个操作栏,因此当我使用setSupportActionBar(toolbar);
时,我的应用会因此冲突而出错。要解决此问题,请在您的应用主题样式资源文件中添加NoActionBar
。
更改此
<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light">
对此
<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light.NoActionBar">
答案 10 :(得分:0)
在Studio 3.0+中添加了androidx之后,工具栏兼容性现在位于新的库中,可以通过这种方式访问
import androidx.appcompat.widget.Toolbar
答案 11 :(得分:0)
只是改变
@model TESTCOREMVC.VIEWMODELS.Attendance.AttendanceViewModel
<form asp-action="Tito">
<div class="form-body">
<div class="card-body">
<div class="row pt-3">
<div class="col-md-6">
<div class="form-group">
<label asp-for="DateFrom" class="control-label" style="font-weight:bold">Time - In</label>
<input asp-for="@Model.DateFrom" readonly type="text" id="timein" class="form-control" placeholder="You don't have a time - in yet.">
@*<small class="form-control-feedback"> This is inline help </small>*@
<br /><br />
<button name="submit" value="timein" type="submit" class="btn btn-info" id="btntimein"> <i class="mdi mdi-login-variant"></i> Time - In</button>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label asp-for="DateTo" class="control-label" style="font-weight:bold">Time - Out</label>
<input asp-for="@Model.DateTo" readonly type="text" id="timeout" class="form-control" placeholder="You don't have a time - out yet.">
@*<small class="form-control-feedback"> This is inline help </small>*@
<br /><br />
<button name="submit" value="timeout" type="submit" class="btn btn-danger" id="btntimeout"> <i class="mdi mdi-logout-variant"></i> Time - Out</button>
</div>
</div>
</div>
</div>
</div>
</form>
收件人
import android.widget.Toolbar;
答案 12 :(得分:0)
可以使用
轻松更改ToolBar的名称android:label="My Activity"
在清单文件中。 我刚刚经过清单并找到了
android:label
根据具体活动帮助更改,希望您尝试一下
答案 13 :(得分:-1)
在你的MainActivity.java中导入android .support.v7.widget.Toolbar插入java程序