Пожалуйста, кто-нибудь Ответьте на это
Значок меню Android onclickOnClickListener
работает только один раз, как я могу это решить?
Ниже моего метода меню из всего, что я естьиспользуя в своем коде значок корзины для подсчета элементов корзины и обновления элементов корзины, этот код я использую, но я устанавливаю OnClickListener
для открытия фрагмента корзины.
public boolean onCreateOptionsMenu(Menu menu) {
mydb = new DBHelper(getApplicationContext());
cart_list = mydb.getAllCotacts();
cartitems=cart_list.size();
getMenuInflater().inflate(R.menu.home, menu);
final MenuItem menuItem = menu.findItem(R.id.cart);
this.menu = menu;
MenuItemCompat.setActionView(menuItem, R.layout.cart_count);
FrameLayout notifCount = (FrameLayout) MenuItemCompat.getActionView(menuItem);
TextView tv = (TextView) notifCount.findViewById(R.id.cart_badge);
tv.setClickable(true);
notifCount.setClickable(true);
tv.setText(cartitems+"");
notifCount.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
onOptionsItemSelected(menuItem);
} });
if(name!=null){
menu.getItem(0).setIcon(ContextCompat.getDrawable(this, R.drawable.userm));
}
return super.onCreateOptionsMenu(menu);
}
Здесь задается значениезначка:
public static void setMenuItem(String title){
final MenuItem menuItem = menu.findItem(R.id.cart);
MenuItemCompat.setActionView(menuItem, R.layout.cart_count);
FrameLayout notifCount = (FrameLayout) MenuItemCompat.getActionView(menuItem);
TextView tv = (TextView) notifCount.findViewById(R.id.cart_badge);
tv.setText(title);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == android.R.id.home) {
return true;
}
if (id == R.id.action_search) {
Intent intent = new Intent(this, SearchActivity.class);
startActivity(intent);
}
if (id == R.id.user) {
if (name != null) {
profile("mess");
}else{
Intent intent = new Intent(this, UserLoginActivity.class);
startActivity(intent);
}
}
if (id == R.id.cart) {
OpenCart();
}
return super.onOptionsItemSelected(item);
}