gpt4 book ai didi

android - 抽屉导航 : How to know the current selected item?

转载 作者:行者123 更新时间:2023-11-29 15:06:18 27 4
gpt4 key购买 nike

有一个左抽屉和一个 fragment ,当抽屉导航中的项目被选中时,它会发生变化。问题是,如果已经选择了“项目 A”,并且用户再次选择它,则 fragment 将更改为同一 fragment 。

为了防止这种行为,我需要知道已经选择了哪个项目。我使用的是属性 mLastSelectedItemPosition,但我认为这不是一个好的解决方案。有没有办法从抽屉导航中获取当前选中的项目?

class OnNavigationItemSelectedListener implements NavigationView.OnNavigationItemSelectedListener {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (mLastSelectedItemPosition != menuItem.getOrder()) {
// Is not the same item, so I can change the fragment.
mLastSelectedItemPosition = menuItem.getOrder();
}
mDrawerLayout.closeDrawers();
return true;
}
}
}

最佳答案

我做完全相同的事情,有一个 int 变量保存选定的位置。要记住的一件事是在 InstaceChange 上保存这个变量,因为如果你不这样做,你的抽屉可能已经过时了。因此,话虽如此,一些代码:

    private static final String MENU_ITEM = "menu_item";
private int menuItemId;
...
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {

if (menuItemId == item.getItemId()) {
drawerLayout.closeDrawer(navigationView);
return false;

switch (item.getItemId()) {
....
}

...
drawerLayout.closeDrawer(navigationView);
item.setChecked(true);
menuItemId = item.getItemId();
return true;
}
});
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(MENU_ITEM, menuItemId);
}

@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
this.menuItemId = savedInstanceState.getInt(MENU_ITEM);
}

类似的东西!

关于android - 抽屉导航 : How to know the current selected item?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37005150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com