2011-10-21 14 views
28

私はアンドロイド - サポート-v4.jarライブラリを使用するので、電話とタブレットの両方のバージョンをサポートするアプリケーションを作成しました。ListFragmentのonCreateOptionsMenuをオーバーライドできません

私の活動はListFragmentを拡張し、私は次のリンクのように、onCreateOptionsMenu(メニューメニュー、MenuInflaterのインフレータ)をオーバーライドしてみました:http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentMenuSupport.html

私は以前setHasOptionsMenuと呼ばれます。

残念ながら、私はonCreateOptionsMenu()をオーバーライドできません。

これはエラーメッセージです:

方法onCreateOptionsMenu(メニューメニュー、MenuInflaterのインフレータ) 型MyFragmentのは、上書きまたはスーパータイプのメソッドを実装しなければなりません。

そして、私はなかったこと:

Public class MyFragment extends ListFragment 

答えて

55

輸入は、互換性ライブラリからではなくSDK自体からであることを確認します。

+0

膨らまこの例では、ここで(あなたのメニューのxmlファイルを膨らませるためにonCreateOptionsMenuをオーバーライドし、それはでした問題。ありがとう。 –

+9

あなたがActoionBarSherlockに同じエラーをグーグルで、この質問に来た場合は、同じ溶液をapplyes。メニューのインポートステートメントを削除し、ABSからメニューを再インポートします。 getMenuInflaterをgetSupportMenuInflaterに置き換えます。 – Snicolas

+1

はちょうどより明確にする:あなたはシャーロックメニュークラス、代わりのSDKのものを使用してメソッドをオーバーライドする必要があります。また、getSupportMenuInflater()を使用してlibメニューを拡張します。 –

6

おっと!それは良いものでした!

android.support.v4.Menuの代わりにMyFragmentにandroid.view.Menuをインポートしました!

私はこの1時間で数時間を失いました!この投稿が少なくとも他の人を助けてくれることを願っています。

46

私はちょうどここにあるもので修正されていませんが、これと同じ問題がありました。私はActionBarSherlockライブラリを使用しており、Menuandroid.support.v4.view.MenuMenuInflaterからandroid.support.v4.view.MenuInflaterではないことがわかります。なぜ私に尋ねないでください。これで全員が修正されるかどうか分かりませんので、どのように計算したら分かりますか?

メソッドをElcipse> Source> Overide/Implementメソッドで右クリックしてください。 ..

ここから見つけてください。Eclipseは自動的に正しいものをインポートします。

+17

注:インフレータを使いたい場合は、 'getMenuInflater()'を 'getSupportMenuInflater()'に置き換えたいでしょう。 – Grimmace

+0

私の場合は、代わりにSherlockFragmentを拡張するのを忘れていました。 –

+0

また、主なアクティビティがABSのように拡張されていることを確認する必要があります: "public class MainActivity extends SherlockActivity {" – Britc

-1

私は使用しました。com.actionbarsherlock.view.Menuを使用しました。

26

私の活動でSherlockActionBarを使用して同様の問題が発生しました。ここで問題固定私のセットアップだった:

import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.view.Menu; 

public class LoginActivity extends SherlockActivity { 

... 
@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getSupportMenuInflater().inflate(R.menu.activity_login, menu); 
     return true; 
    } 

... 


} 
+1

ありがとうございます。標準の 'getMenuInflater()'ではなく 'getSupportMenuInflater()'が決定です。 –

16

は同じ問題を抱えていたが、私は私の断片に間違ったonCreateOptionsMenuメソッドを使用しているため、それでした!

ブール値onCreateOptionsMenu(Menu menu)はアクティビティのみです。

@Override //For Activities 
public boolean onCreateOptionsMenu(Menu menu) { 
... 

フラグメントを含むアクティビティクラスに移動する必要がありました。

フラグメントは、独自のを持っている:オプションメニューの作成onCreateOptionsMenu (Menu menu, MenuInflater inflater)

@Override //For Fragments. 
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater){ 
... 

のボイド:http://developer.android.com/guide/topics/ui/menus.html

1
@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    // TODO Auto-generated method stub 
    getSupportMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
2

はこれを試してみてくださいし、実際にIDEが我々場合import..soネイティブメニューのインポートとシャーロックBW混乱してしまいましたそれを明確に指定すると、解決されます。

@Override 
    public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu, 
      com.actionbarsherlock.view.MenuInflater inflater) { 

} 

@Override 
    public boolean onOptionsItemSelected(
      com.actionbarsherlock.view.MenuItem item) { 
     // TODO Auto-generated method stub 

} 
0

Xamarinの活動でちょうど同じ問題がありました。 それは引数としてXamarin.ActionbarSherlockBinding.Views.IMenuを取るための方法を期待していました。見つける方法

: あなたが実装し始めOnCreateOptionsMenu方法-Comment。 - 一部の作業方法では、呼び出すようにOnCreateOptionsMenuを入力し始めます。 - 提案リストから選択します。 - OnCreateOptionsMenuコールにカーソルを置く。 -pressコマンド+ dを押してアセンブリブラウザに移動します。実装からのインタフェースが表示されます。それはあなたがこのタイプの実装のインタフェースに取得することを要するパラメータの種類にマウスポインタを押して -Then。 - そして、それが入っている名前空間が表示されます。

0

私はフラグメントのonCreateOptionsMenuを使用するのと同じ問題がありました。フラグメントののonCreateメソッドをオーバーライドして、システムがフラグメントがOptionsMenuを使用する知っているように、パラメータ値「真」でsetHasOptionsMenuメソッドを使用していることを確認してください 。

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

その後、私はあなたが正しいです;-)答えたとき、私は私の解決策を書いていたfragmentmenu.xml

@Override 
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.fragmentmenu, menu); 
} 
関連する問題