Как включить пункт меню одним нажатием на пункт меню «Переработка»? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть вид рециркулятора с флажками в InterestsActivity , и я хочу включить СЛЕДУЮЩУЮ кнопку на панели инструментов после того, как я выбрал хотя бы 4 флажка.

Кнопка СЛЕДУЮЩАЯ отключена в onCreateOptionsMenu (меню меню)

 @Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.menu_interests_button, menu);
    nextBtn = menu.findItem(R.id.action_button);
    nextBtn.setEnabled(false);

    return true;
}

Я переопределил onPrepareOptionsMenu (меню меню) и пытался включить там пункт меню с помощью вызова invalidateOptionsMenu () в onClick моего элемента ViewHolder ..

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);

    MenuItem item = menu.findItem(R.id.action_button);
    if(interestMap.size()>=4)
    item.setEnabled(true);

    return true;
}

Мой метод привязки в ViewHolder

public void bind(final Topic subject) {
        interestMap=new HashMap<>();
        mSubjectCheckbox.setText(subject.getSubjectName());
        mSubjectCheckbox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                interestMap.put(subject.getSubjectName(),true);
                if(interestMap.size()>=4)
                    InterestsActivity.this.invalidateOptionsMenu();

            }
        });
    }

Но кнопка не активирована, я делаю правильно или что-то упустил?

 @Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.action_button) {
        mFirebaseUtil.mFirestore.collection("users").document(FirebaseUtil.getCurrentUserId()).collection("interests").add(interestMap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Intent setupIntent = new Intent(InterestsActivity.this, SetupActivity.class);
                startActivity(setupIntent);
                finish();
            }
        });
        return true;
    }

    return super.onOptionsItemSelected(item);
}

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Кажется, с этим кодом все в порядке.

Вы должны проверить, получает ли условие interestMap.size()>=4 правильное значение, т. Е. Ваш interestMap заполнен правильно.

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