当前位置: 首页 > 面试题库 >

应用工具栏时崩溃

乜业
2023-03-14
问题内容

我是Android编程的新手。当我将工具栏应用到我的应用程序时遇到了这个问题,当我尝试运行该应用程序时它崩溃了。这是代码:

ToolbarActivity.java

package com.example.toolbar;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;


public class ToolbarActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_toolbar);

        Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
        if (toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.toolbar, menu);
        return true;
    }

}

activity_toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/my_awesome_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimaryDark"

        app:theme="@style/ThemeOverlay.AppCompat.ActionBar">

    </android.support.v7.widget.Toolbar>


    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="page 1"
        />

</LinearLayout>

这是我的 LogCat

11-23 04:46:35.260: E/AndroidRuntime(1870): FATAL EXCEPTION: main 11-23 04:46:35.260: E/AndroidRuntime(1870): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.toolbar/com.example.toolbar.ToolbarActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. 
11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.ActivityThread.access$600(ActivityThread.java:141) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.os.Handler.dispatchMessage(Handler.java:99)
11-23 04:46:35.260: E/AndroidRuntime(1870): at android.os.Looper.loop(Looper.java:137) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.ActivityThread.main(ActivityThread.java:5103) 11-23 04:46:35.260: E/AndroidRuntime(1870): at java.lang.reflect.Method.invokeNative(Native Method) 11-23 04:46:35.260: E/AndroidRuntime(1870): at java.lang.reflect.Method.invoke(Method.java:525) 11-23 04:46:35.260: E/AndroidRuntime(1870): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-23 04:46:35.260: E/AndroidRuntime(1870): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 11-23 04:46:35.260: E/AndroidRuntime(1870): at dalvik.system.NativeStart.main(Native Method) 11-23 04:46:35.260: E/AndroidRuntime(1870): Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
11-23 04:46:35.260: E/AndroidRuntime(1870): at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionB‌​arActivityDelegateBase.java:165) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.j‌​ava:92) 11-23 04:46:35.260: E/AndroidRuntime(1870): at com.example.toolbar.ToolbarActivity.onCreate(ToolbarActivity.java:19)
11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.Activity.performCreate(Activity.java:5133) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 11-23 04:46:35.260: E/AndroidRuntime(1870): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 11-23 04:46:35.260: E/AndroidRuntime(1870): ... 11 more

有人可以告诉我这是什么问题吗?我已经将appcompat_v7与我的项目一起包含了。谢谢。


问题答案:

您可以在logcat输出中看到答案:

不要请求Window.FEATURE_ACTION_BAR,而是在主题中将windowActionBar设置为false来使用工具栏。

也尝试使用此链接和此链接

确保使用此:

 <item name="windowActionBar">false</item>

在你的主题



 类似资料:
  • 底部导航,有图标和文字,响应鼠标事件和当前页面导航 <nav class="bar bar-tab">   <a class="tab-item external active" href="#">     <span class="icon icon-home"></span>     <span class="tab-label">文案</span>   </a>   <a clas

  • 工具栏是位于屏幕底端的固定(在固定和穿透布局类型中)区域,它包含导航元素。 工具栏不包含任何其他部分,内部只含有普通文本。 工具栏布局 工具栏布局非常简单: <div class="toolbar"> <div class="toolbar-inner"> <a href="#" class="link">Link 1</a> <a href="#" cla

  • 工具栏综述 Toolbar basics 在Jquery Mobile中,有两种标准的工具栏:头部栏和尾部栏 头部栏的作用为网站的标题,通常是移动网站页面的第一个元素,一般包括页面的标题文字和最多两个按钮 尾部栏通常是移动网站页面的最后一个元素,在内容和作用上比头部栏更自由一些,但一般也要包含文字和按钮 在头部栏或尾部栏里放置一个水平的导航栏或选项卡栏的做法是很普遍的,所以Jquery Mobil

  • 工具栏在此是指在移动网站和应用中的头部,尾部和内容中的工具条。所以Jquery Mobile提供了一套标准的工具和导航栏的工具,可以在绝大多数情况下直接使用

  • 我最近遇到了协调器布局的问题。当我尝试创建简单的折叠工具栏布局(如本例所示)时,工具栏似乎位于状态栏下,如下图所示(在preLolipop设备上,一切都正常,因为应用程序不会在状态栏下绘制)。 我的活动布局的代码片段: My Styles(仅限21版),其中BaseAppTheme父级为Theme.AppCompat.Light.NoActionBar:

  • 完整工具栏如下图: 如果工具栏被关闭,可以通过如下方式开启: 主菜单 Tools -> Fiddler Options... -> Appearance -> Show Fiddler Toolbar,打勾确认即可。 下面逐一讲解各按钮的用途: Comment ——给选定的 Session 增加一个备注,添加后会显示在 Web Sessions 面板的 Comments 字段中 Reissue —