Переопределение onOptionsItemSelected из SherlockFragmentActivity

Вчера я нашел отличную библиотеку, которая позволила мне иметь «меню 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?


person CodePrimate    schedule 06.06.2012    source источник
comment
Проверьте, расширяете ли вы SherlockFragmentActivity, если вы расширяете его, вы можете переопределить   -  person Venky    schedule 06.06.2012
comment
Пожалуйста, прочитайте больше, чем просто название моего вопроса.   -  person CodePrimate    schedule 06.06.2012


Ответы (2)


Оказывается, при использовании 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);
    }
}
person CodePrimate    schedule 06.06.2012
comment
Или вы можете просто переключить свой импорт. Метод суперкласса с параметром android.view.MenuItem равен final, чтобы предотвратить переопределение неправильного. - person Jake Wharton; 06.06.2012
comment
Спасибо, мне это тоже помогло - person user1071138; 09.05.2013

Измените import android.view.MenuItem; на import com.actionbarsherlock.view.MenuItem;. В противном случае вы просто используете совершенно другое MenuItem, чем импортируемое.

person Muz    schedule 31.10.2012