0

onClick 수신기의 ImageButton에서 optionMenu를 호출하려고하는데 다음 예외가 발생합니다. 또한 I = infoBtn (하여 ImageButton) myApp.this.findViewById (R.id.pfkey_button) '으로 시도ImageButton의 OpenOptionMenu에서 null 포인터 예외가 발생합니다.

07-19 01:08:09.693: E/AndroidRuntime(15133): java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.Menu.getItem(int)' on a null object reference 


    public class myApp extends Activity implements OnClickListener { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     } 

    /** Called when the activity is first created. */ 
    @Override 
    public void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title); 

     menu_icon = (ImageView) findViewById(R.id.icon); 
     infoBtn = (ImageButton) findViewById(R.id.pfkey_button); 
     menu_icon.setImageResource(R.drawable.info_icon); 

     menu_icon.setOnClickListener(this); 
     infoBtn.setOnClickListener(this); 

     //Create Terminal View 
     terminalView = (TerminalView)findViewById(R.id.terminalView);//new TerminalView(this);  

     registerForContextMenu(terminalView); 

    } 


    public void onClick(View v) { 


      KeyEvent event = null; 

      if (v == infoBtn) { 
       openOptionsMenu(); 
      } 

      if (v == menu_icon) { 
       openOptionsMenu(); 
      } 

     } 

} 

; 하지만

+0

흐름을 이해할 수 있도록 전체 코드를 게시하십시오. 그 때까지,이 자습서를 살펴보면 도움이 될 것입니다 : http://www.javatpoint.com/android-option-menu-example – Kushan

+0

onCreateOptionsMenu (메뉴 메뉴)를 재정의하고 메뉴를 팽창시킨 다음 onOptionsItemSelected (MenuItem item)을 사용하여 항목을 선택하십시오. – Kushan

+0

안드로이드 옵션 메뉴에서 툴바 안에 표시되는 항목입니다. 그걸 찾고 있니? PopupMenu라고하는 또 다른 것이 있는데, 아마도 당신이 무엇인지 알 것입니다. – Kushan

답변

0

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the navigation_menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.your_menu, menu); 
    return true; 
} 

당신의 메뉴 자체가 이렇게 예외를 발생, 팽창되지 않도록 할 수있다) (의 onCreateOptionsMenu 내부에서 먼저 메뉴를 부풀려해야합니다 작동하지 않습니다. 이것은 당신이 onPostCreate를 오버라이드 이유를 모르는 경우

+0

예 팽창 중입니다. – user366584

1

없는 경우 전체 코드를 제공하십시오, 나는 당신이 에서 onCreate에 그 일을 할 놈이야 생각합니다.

이외에도 openOptionsMenu이 내 앱에서 작동하지 않습니다. 여기

public class MainActivity extends AppCompatActivity { 
    private static final String TAG = "MainActivity"; 
    private Toolbar mToolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mToolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(mToolbar); 
     findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mToolbar.showOverflowMenu(); 
      } 
     }); 
    } 

    // override this method to inflat the menu 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     Log.d(TAG, "onOptionsItemSelected: "+item.getTitle().toString()); 
     return super.onOptionsItemSelected(item); 
    } 
} 
0

구현이 정확하지만,이 충돌했다 :

그래서 나는 액션 바 문서라도 코드입니다 대체 할 툴바를 사용합니다.

@Override 
    public boolean onMenuOpened(int featureId, Menu menu) { 

     /*if (!hostcom.isConnected()) 
      menu.getItem(0).setTitle("Login"); 
     else 
      menu.getItem(0).setTitle("Logout");*/ 

     return true; 

    }