2012-01-27 2 views
19

ОК, я простирающийся свою деятельность наМогу ли я использовать совместимую панель действий И фрагмент в том же самом действии?

extends ActionBarActivity 

Моя главная страница меню

extends FragmentActivity 

, когда я могу изменить его продлить ActionBarActivity, чтобы я мог видеть мое действие в строке заголовка в главном меню, он подбрасывает и дает мне ошибку «Ошибка раздувания класса».

Есть ли способ обойти это?

ответ

76

ActionBarActivity extends android.support.v4.app.FragmentActivity, поэтому ActionBarActivity служит для обеих целей.

+0

это действительно полезно – Omid

2

Ваш код от the Action Bar compatibility example, который поставляется с SDK? Если это так, просто измените класс ActionBarActivity в этом примере, чтобы расширить FragmentActivity (из compatibility library, как я полагаю) вместо Activity.

+1

-да, это из примера SDK. -когда я использую расширяет FragmentActivity бар действие не проявляется ... – Jarrette

0

Опытная проблема и решение, как упоминалось в других ответах, это отредактировать класс ActionBarActivity.

Этот класс определен в вашем коде (com.google.android.actionbarcompat). Единственное, что вам нужно сделать, это изменить extends Activity на extends FragmentActivity от android.support.v4.app.FragmentActivity.

0

У вас есть пункты меню для ваших фрагментов? Используйте свои собственные app имена вместо android для app:showAsAction и app:actionLayout и т.д.

Чтобы добавить пространство имен в XML использовать эту строку в menu теге

xmlns:app="http://schemas.android.com/apk/res-auto" 

Э.Г.

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item android:id="@+id/menu_settings" app:showAsAction="ifRoom" android:title="@string/menu_settings" android:orderInCategory="100" /> 
</menu> 

Обратите внимание на app:showAsAction, а не android:showAsAction

Смежные вопросы