2012-02-02 3 views
1

私のメニューをクリックすると、onoptionitemselectedが2回呼び出されます。アップロードアイコンが選択されている場合、それは私はメニューオプションを一度選択します。 onOptionsItemSelectedは2回呼び出されます。 (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> 

で停止する方法について説明します。ログテストでは、2回印刷されます。

+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> 
関連する問題