当前位置: 首页 > 知识库问答 >
问题:

在android应用程序中添加工具栏[重复]

贺君浩
2023-03-14

我想在android应用程序中添加工具栏,但我的StudentDashboard活动中出现了此错误。在git上推送我的应用程序后,在运行时使用java。我找不到它背后的问题。

FATAL EXCEPTION: main
              Process: com.technerdshub.vusocial, PID: 31319
              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.technerdshub.vusocial/com.technerdshub.vusocial.Activities.StudentDashboardActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2693)
              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
              at android.app.ActivityThread.access$900(ActivityThread.java:177)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
              at android.os.Handler.dispatchMessage(Handler.java:102)
              at android.os.Looper.loop(Looper.java:145)
              at android.app.ActivityThread.main(ActivityThread.java:5942)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:372)
              at

              com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
              Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
              at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:198)
              at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130)
              at com.technerdshub.vusocial.Activities.StudentDashboardActivity.onCreate(StudentDashboardActivity.java:51)
              at android.app.Activity.performCreate(Activity.java:6289)

学生仪表板ctivity.java

package com.technerdshub.vusocial.Activities;

    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.design.widget.TabLayout;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.widget.Toolbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;

    import com.google.android.gms.appindexing.Action;
    import com.google.android.gms.appindexing.AppIndex;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.technerdshub.vusocial.Fragments.TaskFragment;
    import com.technerdshub.vusocial.Fragments.dummy.DummyContent;
    import com.technerdshub.vusocial.R;

    import java.util.ArrayList;
    import java.util.List;

    public class StudentDashboardActivity extends AppCompatActivity {

        private Toolbar toolbar;
        private TabLayout tabLayout;
        private ViewPager viewPager;
        /**
         * ATTENTION: This was auto-generated to implement the App Indexing API.
         * See https://g.co/AppIndexing/AndroidStudio for more information.
         */
        private GoogleApiClient client;

        @Override
        protected void onCreate(Bundle savedInstanceState) {

            displayLoginActivity();

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_student_dashboard);

    //        Parse.initialize(new Parse.Configuration.Builder(this)
    //                        .applicationId("J5CIV2z6xeSCXDqdOfhE0kPSikvRFPyDyOJxqJNx")
    //                        .clientKey("bEWm4nWtWiBrMczGfOvA7s4Ulr2bAU3W3TtVSLDf")
    //                        .build()
    //        );
            toolbar = (Toolbar) findViewById(R.id.tool_bar);
            setSupportActionBar(toolbar);

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setElevation(2);


            viewPager = (ViewPager) findViewById(R.id.viewpager);
            setupViewPager(viewPager);

            tabLayout = (TabLayout) findViewById(R.id.tabs);
            tabLayout.setupWithViewPager(viewPager);

    //        ParseObject testObject = new ParseObject("Task");
    //        testObject.put("marks", 99);
    //        testObject.saveInBackground();

            // ATTENTION: This was auto-generated to implement the App Indexing API.
            // See https://g.co/AppIndexing/AndroidStudio for more information.
            client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
        }

        private void setupViewPager(ViewPager viewPager) {
            ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
            adapter.addFragment(new TaskFragment(), "Quiz");
            adapter.addFragment(new TaskFragment(), "Assignment");
            adapter.addFragment(new TaskFragment(), "GDB");
            viewPager.setAdapter(adapter);
        }



        private void displayLoginActivity() {

            Intent i = new Intent(this, Login.class);
            startActivity(i);

        }

        @Override
        public void onStart() {
            super.onStart();

            // ATTENTION: This was auto-generated to implement the App Indexing API.
            // See https://g.co/AppIndexing/AndroidStudio for more information.
            client.connect();
            Action viewAction = Action.newAction(
                    Action.TYPE_VIEW, // TODO: choose an action type.
                    "StudentDashboard Page", // TODO: Define a title for the content shown.
                    // TODO: If you have web page content that matches this app activity's content,
                    // make sure this auto-generated web page URL is correct.
                    // Otherwise, set the URL to null.
                    Uri.parse("http://host/path"),
                    // TODO: Make sure this auto-generated app URL is correct.
                    Uri.parse("android-app://com.technerdshub.vusocial.Activities/http/host/path")
            );
            AppIndex.AppIndexApi.start(client, viewAction);
        }

        @Override
        public void onStop() {
            super.onStop();

            // ATTENTION: This was auto-generated to implement the App Indexing API.
            // See https://g.co/AppIndexing/AndroidStudio for more information.
            Action viewAction = Action.newAction(
                    Action.TYPE_VIEW, // TODO: choose an action type.
                    "StudentDashboard Page", // TODO: Define a title for the content shown.
                    // TODO: If you have web page content that matches this app activity's content,
                    // make sure this auto-generated web page URL is correct.
                    // Otherwise, set the URL to null.
                    Uri.parse("http://host/path"),
                    // TODO: Make sure this auto-generated app URL is correct.
                    Uri.parse("android-app://com.technerdshub.vusocial.Activities/http/host/path")
            );
            AppIndex.AppIndexApi.end(client, viewAction);
            client.disconnect();
        }

        class ViewPagerAdapter extends FragmentPagerAdapter {
            private final List<TaskFragment> mFragmentList = new ArrayList<>();
            private final List<String> mFragmentTitleList = new ArrayList<>();

            public ViewPagerAdapter(FragmentManager manager) {
                super(manager);
            }

            @Override
            public TaskFragment getItem(int position) {
                return mFragmentList.get(position);
            }

            @Override
            public int getCount() {
                return mFragmentList.size();
            }

            public void addFragment(TaskFragment fragment, String title) {
                mFragmentList.add(fragment);
                mFragmentTitleList.add(title);
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return mFragmentTitleList.get(position);
            }


        }

    }

风格xml

<resources xmlns:tools="http://schemas.android.com/tools">

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/ColorPrimary</item>
        <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>



    </style>

    <!--<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.NoActionBar">-->
        <!--<item name="windowActionBar">false</item>-->
        <!--<item name="windowNoTitle">true</item>-->



    <!--</style>-->

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" >

    </style>

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

    <style name="TEST" parent="AppTheme" >
        <item name="colorPrimary">@color/com_facebook_blue</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:colorBackground">@color/cardview_light_background</item>
        <item name="colorPrimaryDark">@color/com_facebook_button_background_color_selected</item>
    </style>


    <!--&lt;!&ndash; new design fai&ndash;&gt;-->
    <!--<style name="MyMaterialTheme" parent="MyMaterialTheme.Base">-->

    <!--</style>-->

    <!--<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">-->
        <!--<item name="windowNoTitle">true</item>-->
        <!--<item name="windowActionBar">false</item>-->
        <!--<item name="colorPrimary">@color/colorPrimary</item>-->
        <!--<item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
        <!--<item name="colorAccent">@color/colorAccent</item>-->
    <!--</style>-->


</resources>

请告诉我,我如何解决这个错误?

共有2个答案

齐驰
2023-03-14

声明应用程序主题与windows ActionBar为false在style.xml

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

如果你使用过任何应用程序支持库的主题,需要包括以下行也

 <item name="windowNoTitle">true</item>
苏宾鸿
2023-03-14

尝试将style.xml更改为低于给定代码

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:windowActionBar">false</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>                  
 类似资料:
  • 在我的MainActivity和我的ChallongeLogin中,在应用程序的顶部有一个很大的栏,列出了我的应用程序的名称。然而,当我最终读到ChallongeEvents时,这个条就消失了...我不记得做过什么特别的事情让这个酒吧消失了。为什么会不了了之?

  • 我正在尝试向我的android应用程序添加自定义字体。我在“资产”文件夹下添加了字体。我遇到了允许您以编程方式将其添加到特定视图的代码。我想将新字体添加到我的整个应用程序并通过我的style.xml文件调用它

  • 在我的activity_main.xml我有这个工具栏: 在清单中有

  • 我的android应用程序有一个工具栏,我想改变它的标题。我使用了toolbar.settitle(),但它不起作用...请帮忙。我该怎么办?我尝试了getSupportActionBar().setTitle(),但它不起作用。

  • 我刚刚安装了Android Studio 0.2.2。我想将SDK工具添加到中,它们在这个文件夹中: 这样我就可以使用它们,例如Phonegap。 但是在我将这个文件夹添加到之后,它仍然在说: Android:命令未找到 奇怪的是,我无法运行该文件夹中的任何可执行文件,即使我将放入该文件夹并键入它们的名称。 我做错了什么?

  • 我正试图在Android中做一个向后兼容的工具栏,我遵循了多种风格指南中给出的所有建议来尝试和完成这个。然而,它似乎仍然不起作用。风格是这样的: 这是工具栏: 这是onCreate方法的主要活动: 不太确定出了什么问题,因为我遵循了许多消息来源给出的所有说明。这是日志: 我花了几个小时研究这段代码,以及无数的教程和StackOverflow问题,但是毫无用处。如果有人能帮助我,我将不胜感激。提前感