Значок количества корзин на панели инструментов - PullRequest
0 голосов
/ 03 октября 2018

У меня есть количество корзин на моей панели инструментов.У меня есть основное действие и несколько фрагментов.

Код для увеличения количества корзин выглядит следующим образом.

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.home, menu);

    MenuItem getItem = menu.findItem(R.id.action_addcart);
    if (getItem != null) {
        cartCounterActionView = (CartCounterActionView) getItem.getActionView();
        cartCounterActionView.setCount(new Database(this).getCountCart(Common.currentUser.getPhone()));
        //Set a ClickListener, the text,
        //the background color or something like that
        cartCounterActionView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
                tx.replace(R.id.frame, new Cart());
                tx.commit();
            }
        });
    }

    return true;
}

Этот код отлично работает в моей основной деятельности, но я хочу сделатьесть, чтобы вызвать этот счетчик корзин в моих фрагментах, чтобы я мог также установить счетчик во фрагментах. Я хочу вызвать его в другом методе, кроме oncreateoption. Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 04 октября 2018

Создайте Menu переменную-член и присвойте ее в onCreateOptionsMenu:

private Menu myMenu;
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.home, menu);
    myMenu = menu;
    // now you can use myMenu to fetch your MenuItem outside onCreateOptionsMenu
    ...
}

Или, если все, что вам нужно, это чтобы код внутри onCreateOptionsMenu запускался из вашего фрагмента, вы можетезвоните getActivity().invalidateOptionsMenu().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...