onCreateOptionsMenu上的Android NullPointerException

时间:2013-05-20 12:50:45

标签: android exception menu nullpointerexception oncreateoptionsmenu

这是我的代码:

public class className extends Activity{
    private MenuActivity menuActivity;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        try {
            ViewConfiguration config = ViewConfiguration.get(this);
            Field menuKeyField = ViewConfiguration.class
                .getDeclaredField("sHasPermanentMenuKey");
            if (menuKeyField != null) {
                menuKeyField.setAccessible(true);
                menuKeyField.setBoolean(config, false);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        menuActivity = new MenuActivity(this, context, R.menu.menu);
        );
    }
    @Override


    public boolean onCreateOptionsMenu(Menu menu) {
        menuActivity.onCreateOptionsMenu(menu);   // <--
        return super.onCreateOptionsMenu(menu);
    }
}

public class MenuActivity {
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = mRootActivity.getMenuInflater();
        inflater.inflate(typeMenu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
    }

    // ...
}

我在行上收到NullPointerException

menuActivity.onCreateOptionsMenu(menu);

这个例外仅出现像Galaxy note这样的一些符号。 你知道为什么会有这个例外吗?

2 个答案:

答案 0 :(得分:1)

//给菜单充气;这会将项目添加到操作栏(如果存在)。         getMenuInflater()。inflate(R.menu.main,menu);

答案 1 :(得分:0)

更改代码
  public boolean onCreateOptionsMenu(Menu menu) {
    menuActivity.onCreateOptionsMenu(menu);   // <--
    return super.onCreateOptionsMenu(menu);
}

 public boolean onCreateOptionsMenu(Menu menu) {
   MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);  // <--
    return true;
}

这项工作在我的计划上。