У меня есть вид рециркулятора с флажками в 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);
}
Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.