web-dev-qa-db-ja.com

SherlockFragmentActivityからonOptionsItemSelectedをオーバーライドする

昨日、アクションバーの左上にボタンが付いた「Facebookメニュー」を表示できるすばらしいライブラリを見つけました。ボタンを押すと、左からアイテムのメニューにスライドします。

問題は、ActionBarSherlockライブラリも利用して、アプリケーションがアクションバーと下位互換性があることを確認したいということです。ライブラリを使用する場合、特に、onOptionsItemSelectedを次のようにオーバーライドする必要があります。

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    int id = item.getItemId();

    if (id == Android.R.id.home) {

        rbmView.toggleMenu();

        return true;

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

ここでライブラリにアクセスすると、開発者がonOptionsItemSelected finalを作成したことがわかりました。私はそれを削除し、もう一度オーバーライドしようとしましたが、ボタンを押しても何も起こらないという製品であることがわかりました。何もありません。

Darvds_ribbonmenuライブラリをactionbarsherlockと一緒に使用する方法について何か考えはありますか?

22
CodePrimate

ABSを使用する場合は、MenuItemの名前空間を指定して、正しいメソッドをオーバーライドしていることを確認する必要があることがわかりました。私の解決策は次のとおりでした:

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) 
{
    int id = item.getItemId();
    Log.d("item ID : ", "onOptionsItemSelected Item ID" + id);
    if (id == Android.R.id.home) {
        rbmView.toggleMenu();

        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}
50
CodePrimate

変化する import Android.view.MenuItem;からimport com.actionbarsherlock.view.MenuItem;。それ以外の場合は、インポートしているものとはまったく異なるMenuItemを使用しているだけです。

17
Muz