我试图将微调器实现到操作栏中,但是当我尝试设置适配器时,我得到了一个空指针引用。我不知道问题是什么,因为我之前在活动中设置它时工作正常。
这是我的代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
// Inflate the menu; this adds items to the action bar if it is present.if (!mNavigationDrawerFragment.isDrawerOpen()) {
// Only show items in the action bar relevant to this screen
// if the drawer is not showing. Otherwise, let the drawer
// decide what to show in the action bar.
getMenuInflater().inflate(R.menu.menu_game, menu);
restoreActionBar();
Spinner s = (Spinner) menu.findItem(R.id.menu_spinner).getActionView(); // find the spinner
/*SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this.getSupportActionBar()
.getThemedContext(), R.array.mile_selections, android.R.layout.simple_spinner_dropdown_item); // create the adapter from a StringArray*/
ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(this, R.array.mile_selections, android.R.layout.simple_spinner_item);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(spinnerAdapter); // set the adapter
s.setOnItemSelectedListener(this);
return true;
}
return super.onCreateOptionsMenu(menu);
}
这是错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
at com.sousheelvunnam.scrimmage.ui.GameActivity.onCreateOptionsMenu(GameActivity.java:138)
答案 0 :(得分:1)
根据其他一些stackoverflow帖子,你需要在调用getActionView之前在菜单对象上调用setActionView。
这篇文章的评论如下:
Casting a Menu Item in XML to a Spinner (Actionbar appcompat)
不,但它引出了另一个几乎同名的问题: stackoverflow.com/questions/14286768 / ...好看的getActionView不行 除非你先使用setActionView。所以它不会捡到它 来自XML - ThomQ Apr 10&#39; 14 at 0:01
以下是帖子的链接,说明你必须使用SetActionView。
答案 1 :(得分:0)
我遇到了同样的问题。如果您按照上面的评论链进行操作,则会发现您不需要使用setActionView。您只需要正确设置布局XML:
我有同样的问题,我的错误是我没有正确使用 actionLayout xml属性正确。首先,你必须定义 像这样的菜单标签中的自定义命名空间 的xmlns:应用程式=&#34; HTTP://schemas.android.com/apk/res-auto"然后在菜单上 您想要使用actionLayout属性的项目,如下所示: 应用程式:actionLayout =&#34; @布局/ month_picker&#34;在这种情况下,month_picker 布局是一个微调。这样做不需要使用 setActionView方法。 - Jorge Salas 5月25日&15; 15:0:50
为我工作。