Intereting Posts
Не все данные, показанные, когда логарифмический режим Android читается программно Facebook Android SDK v4.0.0 Проблема с ShareDialog NullPointerException Значок уведомления о переключении ящика на панели инструментов – Android Как добавить пользовательский тип mime? Как записать экран с Android Studio Флеш анимации CSS3 на Android 2.2 (webkit-transform: translate (..) scale (..) в то же время) Как вы можете реализовать многоэкранный и контекстный ActionMode в ActionBarSherlock? Как сделать плагины Hugo и AndroidDevMetrics скомпилированы только при отладке: Не удалось получить неизвестное свойство 'assembleRelease' для проекта Нет папки «apk», сгенерированной внутри папки «Build» при создании APK Как отобразить окно предупреждения с помощью Xamarin.Forms для проверки? Как добавить логотип в QR-код в android Получение исключения NullPointerException при анализе JSON Armeabi-v7a с -mfloat-abi = hard Как вызвать локальный веб-сервис из мобильного приложения Android

Не удается получить панель действий в классе фрагментов

У меня есть активность с тремя классами фрагментов внутри него. Я получаю сообщение об ошибке при попытке изменить название панели действий изнутри. Если я попытаюсь сделать классы просто общедоступными, а не public static, я получаю сообщение об ошибке при попытке запустить этот класс. Должно быть довольно ясно, что код предназначен для предпочтений, хотя это ничего не должно изменить. Вот код:

package com.simon.wikiics; import android.preference.*; import android.os.*; import java.util.*; public class MainSettingsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.headers, target); } //If I don't make the classes static my app force closes when I try to start them public static class NavigationSettingsActivity extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.navigation); //The getActionBar() is what is giving me the error getActionBar().setTitle("Navigation"); } } public static class InterfaceSettingsActivity extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.interf); //The getActionBar() is what is giving me the error getActionBar().setTitle("Interface"); } } public static class OtherSettingsActivity extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.other); //The getActionBar() is what is giving me the error getActionBar().setTitle("Other"); } } } 

Solutions Collecting From Web of "Не удается получить панель действий в классе фрагментов"

Статический класс не может видеть частные поля другого класса. Вам нужно будет использовать getActivity().getActionBar() чтобы получить его.

@Robert Estivil Если вы используете ActionBarActivity тогда используйте это:

 actionBar = ((ActionBarActivity)getActivity()).getSupportActionBar(); 

Хотя я уже поздно отвечаю. Я нашел ответ arul совершенным, но теперь ActionbarActivity устарела, поэтому небольшая модификация этого ответа завершит работу:

 ActionBar actionBar = ((AppCompatActivity)getActivity()).getSupportActionBar(); 

С AppCompatActivity рекомендуется перейти на панель инструментов вместо панели действий, но если вы этого не сделаете, используйте это, чтобы получить экземпляр панели действий.

 ((AppCompatActivity )getActivity()).getSupportActionBar(); 

Если вы используете SherlokActionBar, вы можете вызвать свою панель действий, используя

 ActionBar mActionBar = ((SherlockFragmentActivity) getActivity()).getSupportActionBar();