Java 工具栏菜单导致我的应用程序在打开时崩溃
我的工具栏中的菜单有问题。项目将生成,但当按下上角的下拉菜单时,应用程序将崩溃。起初,我认为菜单本身膨胀可能有问题,但我找不到导致此错误的行 MainActivity.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
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行,但我已经上传了一个可以正常工作的!你知道工具栏下拉菜单中还有哪些其他的弹出式主题吗?当然,请查看这个链接:在这里你会发现如何制作自定义主题。非常感谢。