Reputation: 53
I'm having trouble with the menu in my toolbar. The project builds but when the drop down menu is pressed in the top corner,the application crashes. At first i thought it may have been a problem inflating the menu itself but i can't locate the line that is causing this error.
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;
}
}
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>
ERROR:
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)
Upvotes: 0
Views: 245
Reputation: 153
Try to change the line of code given below. Provide any custom theme or any other theme and if you don't want any theme you can also delete popupTheme it will work fine
app:popupTheme="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu"
Upvotes: 1