'Binary XML file line #32: Failed to resolve attribute at index 1: TypedValue{t=0x2/d=0x7f0300cc a=-1}
I want to show PopupMenu it is inside recycerview but
When i click menuButton app crashing and to finding the issue i removed showPopupMenuMenu() method calling from setOnClickListener and replaced with toast it is working fine
The problem is in showPopupMenuMenu() method any one please help me to solve this issue
holder.menuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
showPopupMenuMenu(holder,position);
}catch (Exception e){
Log.e("showPopupMenuMenu",e.getMessage()+"");
}
}
});
private void showPopupMenuMenu(MyViewHolder holder, final int position){
//creating a popup menu
PopupMenu popup = new PopupMenu(context, holder.menuButton);
//inflating menu from xml resource
popup.inflate(R.menu.recyclerview_option_menu);
//adding click listener
try{
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.edit_menu:
//handle menu1 click
if (context instanceof MyAddressActivity) {
((MyAddressActivity) context).openEditAddressActivity(position, true);
} else if (context instanceof CheckoutLocationActivity) {
((CheckoutLocationActivity) context).openEditAddressActivity();
}
break;
case R.id.delete_menu:
//handle menu2 click
if (context instanceof MyAddressActivity) {
((MyAddressActivity) context).deleteAddressItem(position);
} else if (context instanceof CheckoutLocationActivity) {
((CheckoutLocationActivity) context).mCheckoutLocationActivityPresenter.deleteAddressItem(position);
}
break;
}
return false;
}
});
}catch (Exception e){
Log.e("showPopupMenuMenu","setOnMenuItemClickListener "+e.getMessage()+"");
}
//displaying the popup
popup.show();
}
Binary XML file line #32: Failed to resolve attribute at index 1: TypedValue{t=0x2/d=0x7f0300cc a=-1}
R.menu.recyclerview_option_menu
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/edit_menu"
android:title="@string/edit" />
<item
android:id="@+id/delete_menu"
android:title="@string/delete" />
</menu>
Solution 1:[1]
Try this please;
openPopUpMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(activity, v);
popupMenu.getMenuInflater().inflate(R.menu.pop_up_menu, popupMenu.getMenu());
popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
if (menuItem.getTitle().equals("1. item title")) {
//do something
} else if (menuItem.getTitle().equals("2.item Title")) {
// do something
}
return false;
}
});
}
});
Solution 2:[2]
If your using PopupMenu inside Adapter make sure tht Data passing to Constructor should be like
AddressAdapter addressAdapter=new AddressAdapter(AddressList.this,addressModels);
recyclerView.setAdapter(addressAdapter);
instead of
AddressAdapter addressAdapter=new AddressAdapter(getApplicationContext(),addressModels);
recyclerView.setAdapter(addressAdapter);
Note : Pass Activity ".this" not "ApplicationContext()"
Solution 3:[3]
You should use import android.widget.PopupMenu; librariy. You shuldn't androidx.appcompat.widget this isnt work.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 | Muhammed Murat Göktaş |
