2012-02-04 12 views
0

他のアクティビティの派生元となるAndroidアクティビティを実装しています。だから、基本的に、私はこのInventoryActivityの設定とその親クラス、ListActivityありますAndroid onCreateOptionMenuが呼び出されていない

public class MyListActivity extends Activity { 
    protected Context mContext; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = this.getBaseContext(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options, menu); 
     Log.d("Creating options menu", "True"); 
     return true; 
    } 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     Log.d("Preparing options menu", "True"); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.save: 
      return(true); 

      case R.id.revert: 
      return(true); 
     } 

     return(super.onOptionsItemSelected(item)); 
    } 
} 


public class InventoryActivity extends MyListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.inventory); 
    } 
} 

を、必要に応じて、私はまた、Options.xmlを

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/card_list_save" 
      android:icon="@drawable/ic_menu_save" 
      android:title="Save"/> 
    <item android:id="@+id/card_list_revert" 
      android:icon="@drawable/ic_menu_revert" 
      android:title="Revert" /> 
</menu> 

でこれを持って、これはのInventory.xmlのための私のレイアウトであります

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <Button 
     android:id="@+id/callSearch" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Search"/> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:id="@+id/inventory"/> 
    </ScrollView> 
</LinearLayout> 

ただし、メニューボタンを押しても何も起こりません。 onCreateOptionsMenuメソッドのログメッセージは表示されません。代わりに私が見ることができるすべては以下の通りです:

02-04 11:36:58.313: W/KeyCharacterMap(31464): No keyboard for id 0 
02-04 11:36:58.313: W/KeyCharacterMap(31464): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 

しかし、ほとんど私をバッフルと、このコードは、このような私のランチャー活動などの他の活動に動作することです。しかし、オブジェクト指向プログラミングという概念によって、InventoryActivityはMyListActivityで優先メソッドを呼び出す必要があります。私は完全に立ち往生しており、私は助けが必要です。

答えて

0

うーん...理由はわかりませんが、MyListActivityonCreateメソッドを削除すると問題が解決しました。したがって、クラスは次のようになります。

public class MyListActivity extends Activity { 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options, menu); 
     Log.d("Creating options menu", "True"); 
     return true; 
    } 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     Log.d("Preparing options menu", "True"); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.save: 
      return(true); 

      case R.id.revert: 
      return(true); 
     } 

     return(super.onOptionsItemSelected(item)); 
    } 
} 
3

ListActivityはすでにAndroid SDKのクラスです。私の推測では、あなたのパッケージではなく、android.app.ListActivityをインポートしています。

+0

実際のクラス名を表示したくないので、私はそれを任意に 'ListActivity'という名前にしました。私はそれを 'MyListActivity'に変更しました。 – Dan

+0

うーん...そして、私はここで何が起こっているのか正確にはわからない。すべてのコードをテストプロジェクトにコピーしたところ、すべてが期待通りに機能しました(ログプリントとメニュー表示)。私はR.id.saveをR.id.card_list_saveにする必要があるときにR.id.saveを参照していることに気付きましたが、それは疑いの余地があります。うーん... –

関連する問題