我有一个包含组中操作的抽屉,提交了我想要动态放入另一个组的文件列表。我的主要活动有这样的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
</android.support.v4.widget.DrawerLayout>
然后加载的NavigationView是:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/test_id">
<group android:checkableBehavior="single" android:id="@+id/group_file_list">
<item
android:id="@+id/file1"
android:icon="@drawable/ic_menu_gallery"
android:title="File 1"/>
...
</group>
<item android:title="Actions">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_menu_share"
android:title="Share"/>
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_menu_send"
android:title="Send"/>
</menu>
</item>
</menu>
当我尝试获取文件所在的组以后动态添加Items时,所有这些都返回null:
findViewById(R.id.group_file_list); // returns null
View navView = findViewById(R.id.nav_view); // works
navView.findViewById(R.id.group_file_list); // returns null
navView.findViewById(R.id.test_id); // returns null
是的,我在setContentView()
之后调用了这个。我也试过onStart()
有什么想法吗?
答案 0 :(得分:0)
这些是菜单项而不是视图。您可以使用选项菜单
获取它们Menu optionsMenu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
// store the menu to var when creating options menu
optionsMenu = menu;
}
然后你可以找到你想要的项目
MenuItem item = optionsMenu.findItem(R.id.test_id);
答案 1 :(得分:0)
使用此功能将项目添加到抽屉:
NavigationView navView = findViewById(R.id.nav_view);
navView.getMenu().add(...);
或者,要添加到组,请执行以下操作:
navView.getMenu().addSubMenu(Menu.NONE, Menu.NONE, Menu.NONE, groupName).add(...);