2

Это мой код:Android 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); 

Это исключение присутствует только некоторые Moble как Galaxy Note. Вы знаете, почему существует это исключение?

ответ

1

// Надуть меню; это добавляет элементы в панель действий, если она присутствует. getMenuInflater(). Надуть (R.menu.main, menu);

+0

У меня есть «inflater.inflate (R.menu.menu, menu);» – shuttle1978

+0

все еще ур, получая ошибку @shuttle – MohsinSyd

+0

на моем мобильном устройстве прекрасно работает, проблема в том, что это только некоторые мобильные устройства, например заметка Galaxy, она отлично работает и в эмуляторе, я не знаю, почему эта инициализация падает на некоторых мобильных устройствах, и я не знаю, знать, как копировать это исключение – shuttle1978

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; 
} 

Эта работа по моей программе.

Смежные вопросы