Android 微调器在菜单中始终为空

Android 微调器在菜单中始终为空,android,android-layout,nullpointerexception,Android,Android Layout,Nullpointerexception,因此,我按照此链接将微调器添加到导航抽屉: 这是我的代码: @BindView(R.id.drawerLayout) DrawerLayout mDrawerLayout; @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.navigation_view) NavigationView navigationView; @BindView(R.id.navigation_filter_view) NavigationView navi

因此,我按照此链接将微调器添加到导航抽屉:

这是我的代码:

@BindView(R.id.drawerLayout)
DrawerLayout mDrawerLayout;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.navigation_view)
NavigationView navigationView;
@BindView(R.id.navigation_filter_view)
NavigationView navigationFilterView;
Spinner citiesSpinner;
private ActionBarDrawerToggle mToggle;

private View navigationHeaderView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Iconify.with(new FontAwesomeModule());
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    initNavigationDrawer();
    toolbar.setTitle("");
    setSupportActionBar(toolbar);
    navigationHeaderView = LayoutInflater.from(this).inflate(R.layout.navigation_header, null);
    citiesSpinner = (Spinner) navigationFilterView.getMenu().findItem(R.id.city_spinner).getActionView();
    citiesSpinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, getResources().getStringArray(R.array.cities)));

}
@bindwiew(R.id.drawerLayout)
抽屉布局mDrawerLayout;
@BindView(R.id.toolbar)
工具栏;
@BindView(R.id.navigation\U视图)
导航视图导航视图;
@BindView(R.id.navigation\u filter\u视图)
导航视图导航过滤视图;
纺纱机;
私人行动bardrawertoggle mtogle;
私有视图导航headerview;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
使用(新的FontAwesomeModule());
setContentView(R.layout.activity_main);
把(这个)绑起来;
initNavigationDrawer();
工具栏。设置标题(“”);
设置支持操作栏(工具栏);
navigationHeaderView=LayoutFlater.from(this).充气(R.layout.navigation\u标题,空);
citiesSpinner=(微调器)navigationFilterView.getMenu().findItem(R.id.city_微调器).getActionView();
citiesSpinner.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_spinner_dropdown_项目,getResources().getStringArray(R.array.cities));
}
城市微调器布局:

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/citiesSpinner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
</Spinner>

导航过滤器视图:

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_filter_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:background="@color/colorAccent"
    app:menu="@menu/search_menu">
 </android.support.design.widget.NavigationView>

搜索菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/city_spinner"
    android:actionLayout="@layout/city_spinner"
    android:title="" />
</menu>

问题是citiesSpinner总是空的

尝试在空对象引用上调用虚拟方法“void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)”


你需要像那样修改你的代码

   NavigationView navigationHeaderView = (NavigationView) findViewById(R.id.navigation_filter_view);
    View hView =  navigationHeaderView.getHeaderView(0);
    citiesSpinner = (Spinner) hView.findViewById(R.id.citiesSpinner);
    citiesSpinner.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, getResources().getStringArray(R.array.cities)));
NavigationView navigationHeaderView=(NavigationView)findViewById(R.id.navigation\u filter\u视图);
View hView=navigationHeaderView.getHeaderView(0);
citiesSpinner=(微调器)hView.findViewById(R.id.citiesSpinner);
citiesSpinner.setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_spinner_dropdown_项目,getResources().getStringArray(R.array.cities));

为什么有两个导航视图字段?一个用于左导航视图,一个用于右导航视图