Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 工具栏菜单导致我的应用程序在打开时崩溃_Java_Android_Android Actionbar_Android Toolbar_Android Menu - Fatal编程技术网

Java 工具栏菜单导致我的应用程序在打开时崩溃

Java 工具栏菜单导致我的应用程序在打开时崩溃,java,android,android-actionbar,android-toolbar,android-menu,Java,Android,Android Actionbar,Android Toolbar,Android Menu,我的工具栏中的菜单有问题。项目将生成,但当按下上角的下拉菜单时,应用程序将崩溃。起初,我认为菜单本身膨胀可能有问题,但我找不到导致此错误的行 MainActivity.java: public class MainActivity extends AppCompatActivity { CircleImageView usrImg; TextView usrName; FirebaseUser firebaseUser; DatabaseReference re

我的工具栏中的菜单有问题。项目将生成,但当按下上角的下拉菜单时,应用程序将崩溃。起初,我认为菜单本身膨胀可能有问题,但我找不到导致此错误的行

MainActivity.java:

public class MainActivity extends AppCompatActivity {
    CircleImageView usrImg;
    TextView usrName;

    FirebaseUser firebaseUser;
    DatabaseReference ref;

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //<-------TOOLBAR LAYOUT----------->
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("");
    }

    //MENU CONTROLS
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.signOut:
                FirebaseAuth.getInstance().signOut();
                startActivity(new Intent(MainActivity.this,LoginActivity.class));
                finish();
                return true;
        }
        return false;
    }
}

public类MainActivity扩展了AppCompatActivity{
CircleImageView usrImg;
文本视图usrName;
FirebaseUser FirebaseUser;
数据库参考文献;
@RequiresApi(api=Build.VERSION\u CODES.KITKAT)
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
getSupportActionBar().setTitle(“”);
}
//菜单控件
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单,菜单);
返回true;
}
@凌驾
公共布尔值OnOptionItemSelected(@NonNull MenuItem item){
开关(item.getItemId()){
案例R.id.注销:
FirebaseAuth.getInstance().signOut();
startActivity(新意图(MainActivity.this,LoginActivity.class));
完成();
返回true;
}
返回false;
}
}
MainActivity.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/brLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimaryDark"
            android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
            app:popupTheme="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
            <de.hdodenhof.circleimageview.CircleImageView
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:id="@+id/imgProfile"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/txtProfile"
                android:text="USERNAME"
                android:textColor="#FEFCFB"
                android:layout_marginLeft="25dp"
                android:layout_marginStart="25dp" />
        </androidx.appcompat.widget.Toolbar>
    </com.google.android.material.appbar.AppBarLayout>
</RelativeLayout>


menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/inbox"
        android:title="Messages"
        app:showAsAction="never"/>
    <item
        android:id="@+id/signOut"
        android:title="Sign Out"
        app:showAsAction="never"/>
</menu>

错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.mseabraham.finalyearapp, PID: 26662
    android.view.InflateException: Binary XML file line #51: Binary XML file line #51: Error inflating class TextView
    Caused by: android.view.InflateException: Binary XML file line #51: Error inflating class TextView
    Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 4: TypedValue{t=0x2/d=0x1010099 a=1}
        at android.content.res.TypedArray.getColor(TypedArray.java:477)
        at android.widget.TextView.readTextAppearance(TextView.java:3539)
        at android.widget.TextView.<init>(TextView.java:924)
        at android.widget.TextView.<init>(TextView.java:869)
        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:99)
        at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:95)
        at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:182)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1407)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1457)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at androidx.appcompat.view.menu.MenuAdapter.getView(MenuAdapter.java:94)
        at androidx.appcompat.view.menu.MenuPopup.measureIndividualMenuWidth(MenuPopup.java:161)
        at androidx.appcompat.view.menu.StandardMenuPopup.tryShow(StandardMenuPopup.java:174)
        at androidx.appcompat.view.menu.StandardMenuPopup.show(StandardMenuPopup.java:208)
        at androidx.appcompat.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:290)
        at androidx.appcompat.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:177)
        at androidx.appcompat.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:797)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
E/AndroidRuntime:致命异常:主
进程:com.msearaham.finalyearapp,PID:26662
android.view.InflateException:二进制XML文件行#51:二进制XML文件行#51:膨胀类TextView时出错
原因:android.view.InflateException:二进制XML文件行#51:膨胀类TextView时出错
原因:java.lang.UnsupportedOperationException:未能解析索引4处的属性:TypedValue{t=0x2/d=0x1010099 a=1}
位于android.content.res.TypedArray.getColor(TypedArray.java:477)
位于android.widget.TextView.readTextAppearance(TextView.java:3539)
位于android.widget.TextView。(TextView.java:924)
位于android.widget.TextView。(TextView.java:869)
在androidx.appcompat.widget.AppCompatTextView。(AppCompatTextView.java:99)
在androidx.appcompat.widget.AppCompatTextView。(AppCompatTextView.java:95)
在androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:182)中
在androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103)中
在androidx.appcompat.app.appcompatedelegateimpl.createView(appcompatedelegateimpl.java:1407)
在androidx.appcompat.app.AppCompateDelegateImpl.onCreateView(AppCompateDelegateImpl.java:1457)上
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
在android.view.LayoutInflater.充气(LayoutInflater.java:515)
在android.view.LayoutInflater.充气(LayoutInflater.java:423)
位于androidx.appcompat.view.menu.MenuAdapter.getView(MenuAdapter.java:94)
在androidx.appcompat.view.menu.MenuPopup.measureIndividualMenuWidth(MenuPopup.java:161)中
位于androidx.appcompat.view.menu.StandardMenuOpup.tryShow(StandardMenuOpup.java:174)
在androidx.appcompat.view.menu.StandardMenuOpup.show(StandardMenuOpup.java:208)中
在androidx.appcompat.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:290)中
在androidx.appcompat.view.menu.menupopupherper.tryShow(menupopupherper.java:177)中
位于androidx.appcompat.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:797)
位于android.os.Handler.handleCallback(Handler.java:873)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6669)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

尝试更改下面给出的代码行。提供任何自定义主题或任何其他主题,如果您不想要任何主题,您也可以删除流行主题

 app:popupTheme="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu"

检查XML文件第51行或在此处上载文件。@AjayThakur哪个XML文件?因为主活动的xml文件没有第51行,但我已经上传了一个可以正常工作的!你知道工具栏下拉菜单中还有哪些其他的弹出式主题吗?当然,请查看这个链接:在这里你会发现如何制作自定义主题。非常感谢。