У меня есть NavigationDrawer, разделенный на два раздела. Сначала содержит пункты меню с идентификаторами, такими как «назад», «выход» и т. Д. Он создается с использованием xml-файла. Второй создается динамически, поэтому я не могу определить какой-либо идентификатор или что-то еще. И поскольку это объект типа меню, я не могу найти способ написать правильный прослушиватель для элементов из второго раздела. Например: если я нажимаю элемент 1 из раздела 2, начинается действие 1 и т. Д. Любые идеи? Фрагмент моего кода:NavigationDrawer Menu Элемент, выбранный положением
Создания второго раздела моего NavigationDrawer «меню
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(this, "onActivityResult", Toast.LENGTH_LONG).show();
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK){
arrayFav.clear();
arrayLin.clear();
ArrayList<String> passedText = data.getStringArrayListExtra("text");
ArrayList<String> passedLink = data.getStringArrayListExtra("link");
arrayFav.addAll(passedText);
arrayLin.addAll(passedLink);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu mainMenu = navigationView.getMenu();
final Menu menuWithFavJobs = mainMenu.addSubMenu(Fav jobs: "+mEditTextPraca.getText().toString());
for (int i = 0; i < arrayFav.size(); i++) {
menuWithFavJobs.add(arrayFav.get(i));
}
}
}
}
и ту части, где я использовал первую» секцию идентификаторов, чтобы сделать какое-то действие:
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_back) {}
else if (id == R.id.nav_export) {
onExportPressed();
}
else if (id == R.id.nav_exit) {
onExitPressed();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
Я пробовал:
menuWithFavJobs.getItem(i).setOnMenuItemClickListener()...
но он работает только для меню с одним товаром :( Ple ase для любых намеков! :) Я должен решить это.
Да! Решение было действительно просто. Но это доказывает, что кодирование - не самая лучшая идея в середине ночи :) Спасибо! –