首页 文章

在android微调器上获取空指针

提问于
浏览
1

我正在尝试将微调器实现到操作栏中,但是当我尝试设置适配器时,我得到一个空指针引用 . 我不知道问题是什么,因为它在我之前在活动中设置时工作正常 .

这是我的代码

@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)

2 回答

  • 1

    根据其他一些stackoverflow帖子,您需要在调用getActionView之前在菜单对象上调用setActionView .

    这篇文章的评论如下:

    Casting a Menu Item in XML to a Spinner (Actionbar appcompat)

    不,但它引出了另一个几乎同名的问题:stackoverflow.com/questions/14286768 / ...除非先使用setActionView,否则除非getActionView无效 . 所以它不会从XML中获取它 - ThomQ 2014年4月10日0:01

    这里是帖子的链接,说你必须使用SetActionView .

    getActionView() of my MenuItem return null

  • 0

    我遇到了同样的问题 . 如果您按照上面的注释链,您会发现您不需要使用setActionView . 您只需要正确设置布局XML:

    我有同样的问题,我的错误是我没有正确使用actionLayout xml属性 . 首先,您必须在菜单标记中定义一个自定义命名空间,如xmlns:app =“http://schemas.android.com/apk/res-auto”然后在菜单项上您必须使用actionLayout属性如下:app:actionLayout =“@ layout / month_picker”在这种情况下,month_picker布局是一个微调器 . 这样做不需要使用setActionView方法 . - Jorge Salas 2015年5月25日0:50

    为我工作 .

相关问题