2012-02-02 4 views
1

내 메뉴를 클릭하면 onoptionitemselected가 두 번 호출됩니다. 업로드 아이콘을 선택하면이메뉴 옵션을 한 번 선택하면됩니다. onOptionsItemSelected가 두 번 호출됩니다. (Android)

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.docmenu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.upload: 
      Log.e("testing", "called"); 
      return true; 
     case R.id.back: 
     return true; 
     default: 
     return super.onOptionsItemSelected(item); 
    } 
    } 

내 메뉴 XML은

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/upload" 
      android:icon="@drawable/menu_upload" 
      android:title="@string/upload" /> 
    <item android:id="@+id/back" 
      android:icon="@drawable/menu_back" 
      android:title="@string/back" /> 
</menu> 

이다 중지하는 방법. 로그 테스트에서 두 번 인쇄됩니다.

+0

어떻게 메뉴를 초기화합니까? – ariefbayu

답변

2
@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
    case R.id.Aboutus: 
     final Dialog d1 = new Dialog(Welcome.this); 
     d1.setContentView(R.layout.aboutus); 

     d1.show(); 



     break; 

그리고 res라는 이름의 메뉴 아래에 폴더가 만들어 졌는지 확인하십시오. 다음과 같이 새로운 menu.xml 파일

하고 menu.xml 파일에 다음과 같은 코드를 넣어 : true를 돌려 onOptionsItemSelected

<?xml version="1.0" encoding="utf-8"?> 

<item android:id="@+id/Aboutus" 
    android:title="About Us" android:icon="@drawable/ic_menu_about_us" /> 

<item android:id="@+id/Settings" 
    android:title="Settings" android:icon="@drawable/ic_menu_settings"/> 



<item android:id="@+id/help" 
    android:title="Help" android:icon="@drawable/ic_menu_help" /> 

+0

이제 xml을 추가하고 메뉴 코드를 초기화했습니다. 문제가 무엇입니까? – Manoharan

+0

@Manoharan은 각 사례를 올바르게 깨뜨립니다. – OnkarDhane

+0

부울을 반환해야하는 경우 어떻게 깨울 수 있습니까? – Manoharan

1

다음 코드를 시도하십시오 ...

@Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
     case R.id.menu_settings: 
       Toast.makeText(getApplicationContext(), "Settings", Toast.LENGTH_LONG).show(); 
      break; 

     case R.id.my_settings: 
      Toast.makeText(getApplicationContext(), "Home Page", Toast.LENGTH_LONG).show(); 
      break; 
     default: 
      Toast.makeText(getApplicationContext(), "Exit", Toast.LENGTH_LONG).show(); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

메뉴 폴더에 새 XML을 만들고이 코드를 적용하십시오.

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_settings" 
     android:title="@string/menu_settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" /> 
    <item android:id="@+id/my_settings" 
     android:title="@string/my_settings" 
     android:orderInCategory="100" 
     android:showAsAction="never" /> 
</menu> 
관련 문제