- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想让 NavigationView
在应用程序启动时检查一项。但我发现 NavigationView.setCheckedItem(R.id.xxx)
不工作。我还尝试了 navigationView.getMenu().findItem(R.id.xxx).setChecked(true)
,结果相同。
我已经将 checkableBehavior 设置为 single。
<item android:title="@string/sliding_menu_group_places">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/xxx" />
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/xxx" />
...
</group>
</menu>
</item>
但有一种方法可行:
drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
navigationView.setChecked(R.id.xxx);
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
});
导航项将在 onDrawerOpened 回调中检查。我在 stackoverflow 中搜索了很多,但没有一种方法适合我。谁能帮帮我。
EDIT-1
<?xml version="1.0" encoding="utf-8"?>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/recent_display_name" />
<item android:title="@string/sliding_menu_group_places">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/my_files_display_name" />
<item
android:id="@+id/nav_item_sdcard"
android:icon="@drawable/ic_nav_sdcard"
android:title="@string/storage_display_name" />
</group>
</menu>
</item>
<item android:title="@string/sliding_menu_group_tool">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/clean_display_name" />
</group>
</menu>
</item>
<item android:title="@string/sliding_menu_group_settings">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/settings_display_name" />
<item
android:id="@+id/xxx"
android:icon="@drawable/xxx"
android:title="@string/exit_display_name" />
</group>
</menu>
</item>
</group>
最佳答案
感谢@darwin。
原因:navigationView.setCheckedItem(R.id.xxx)
不工作,因为 NavigationView
还没有准备好。
解决方案:
navigationView.post(new Runnable() {
@Override
public void run() {
navigationView.setCheckedItem(id);
}
});
关于android - NavigationView 与 DrawerLayout setCheckedItem 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991110/
我想在应用程序启动时选择抽屉导航中的特定项目。我在 visual studio 默认模板中添加了 navigationView.SetCheckedItem(Resource.Id.nav_galle
我想让 NavigationView 在应用程序启动时检查一项。但我发现 NavigationView.setCheckedItem(R.id.xxx) 不工作。我还尝试了 navigationVie
我有以下菜单资源文件(由 androids Navigation Drawer Activity 生成)并由我自定义:
我是一名优秀的程序员,十分优秀!