gpt4 book ai didi

android - NavigationView 与 DrawerLayout setCheckedItem 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:18 25 4
gpt4 key购买 nike

我想让 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/

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