Значок меню Android OnClickListener работает только один раз, как я могу это решить? - PullRequest
0 голосов
/ 22 ноября 2018

Пожалуйста, кто-нибудь Ответьте на это

Значок меню 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);
}
...