我只是想在操作栏中添加微调器,但经过大量调试后我无法理解为什么getActionView()方法没有返回任何视图(我也用视图测试).Logcat显示:
`java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference`
这是我的Java代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
MenuItem item=menu.findItem(R.id.spinner_item);
Spinner spinner=(Spinner)item.getActionView();
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.items,android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
return true;
}
这是我的res / menu / menu.xml文件
<menu 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"
tools:context="com.example.haha.Main" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"
/>
<item
android:id="@+id/spinner_item"
android:title="@string/sort"
app:showAsAction="always"
android:actionLayout="@layout/spinner_main"
android:checkable="true"
/>
</menu>
这是layout / spinner_main.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Spinner
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:entries="@array/items"
android:background="#212121"
/>