2012-04-11 5 views
0

初心者からAndroidへの開発。私は3つの異なるタブを持つアプリケーションを開発しています。私は共通のメニューオプションが必要です。問題は、何も起こらないメニューアイテムがクリックされたときです。最初のタブのアクティビティに移動したときに機能します。 ここに私のTabActivityメニュー実装があります。ここでtablayoutのすべてのタブの1つのメニュー?

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

    @Override 
    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     switch(item.getItemId()) { 
      case R.id.feedbackEmail: 
       showDialog(FEEDBACK_DIALOG_ID); 
       return true; 
      case R.id.about: 
       AboutBox.Show(this); 
       return true; 
      case R.id.Help: 
       HelpBox.Show(this); 
       return true; 
      case R.id.Preferences: 
       Intent intent = new Intent(this, Preferences.class); 
       startActivity(intent); 
       return true; 
      case R.id.powerUsage: 
       startActivity(intentPowerUsage); 
       return true; 
      case R.id.close: 
       Intent homeIntent = new Intent(Intent.ACTION_MAIN); 
       homeIntent.addCategory(Intent.CATEGORY_HOME); 
       homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       Preferences.cancelNotification(this); 
       startActivity(homeIntent); 
       return true; 
     } 
     return super.onMenuItemSelected(featureId, item); 
    } 

は、すべてのケースのための私のmenu.xml

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

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/feedbackEmail" 
      android:icon="@android:drawable/ic_dialog_email" 
      android:title="@string/feedback" /> 
    <item android:id="@+id/Help" 
      android:icon="@android:drawable/ic_menu_help" 
      android:title="@string/menu_help" /> 
    <item android:id="@+id/Preferences" 
      android:icon="@android:drawable/ic_menu_preferences" 
      android:title="@string/preferences" /> 
    <item android:id="@+id/about" 
      android:icon="@android:drawable/ic_menu_info_details" 
      android:title="@string/menu_about" /> 
    <item android:id="@+id/powerUsage" 
      android:icon="@android:drawable/ic_menu_today" 
      android:title="@string/powerUsage" /> 
    <item android:id="@+id/close" 
      android:icon="@android:drawable/ic_menu_close_clear_cancel" 
      android:title="@string/exit" /> 
</menu> 
+0

menu.xmlを投稿していただければ、より簡単にお手伝いできます。 – erbsman

答えて

2

あなたがこのようで行うことができます、

BaseActivityという名前のアクティビティを作成し、このメニューコードをBaseActivityを入力して、メニューを表示するすべてのActivityを拡張します。 this答えをチェックして、すべてのアクティビティに対してonKeyDown()を上書きすることができます。

+0

私は既にListActivityですべてのアクティビティを拡張していますが、もし間違いでないならば、javaは多重継承をサポートしていません。 –

+0

すべてのアクティビティをListActivityで拡張した場合は、ActivityではなくListActivityでBaseActivityを拡張します。 –

+0

おかげで魅力的な作品になりました。 –

0

使用break文であり、以下のようにすべてのケースから真のリターンを削除::

public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     switch(item.getItemId()) { 
      case R.id.feedbackEmail: 
       showDialog(FEEDBACK_DIALOG_ID); 
       break; 
      case R.id.about: 
       AboutBox.Show(this); 
       break; 
      case R.id.Help: 
       HelpBox.Show(this); 
       break; 
      case R.id.Preferences: 
       Intent intent = new Intent(this, Preferences.class); 
       startActivity(intent); 
       break; 
      case R.id.powerUsage: 
       startActivity(intentPowerUsage); 
       break; 
      case R.id.close: 
       Intent homeIntent = new Intent(Intent.ACTION_MAIN); 
       homeIntent.addCategory(Intent.CATEGORY_HOME); 
       homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       Preferences.cancelNotification(this); 
       startActivity(homeIntent); 
       break; 
     } 
     return true; 
    } 
+0

まだ動作しません –

関連する問題