Kann keine Aktionsleiste in Fragmentklasse bekommen

Ich habe eine Aktivität mit drei Fragmentklassen in ihr. Ich bekomme einen Fehler beim Versuch, den Action-Bar-Titel von innen zu wechseln. Wenn ich versuche, die Klassen nur öffentlich und nicht öffentlich zu machen, bekomme ich einen Fehler, wenn ich versuche, diese Klasse zu starten. Es sollte ziemlich klar sein, dass der Code für Präferenzen ist, obwohl das nichts ändern sollte. Hier ist der Code:

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"); } } } 

  • Android: ActionBar wie der Aktien-Browser
  • Was ist das Gegenteil von ActionBar in früheren Sdk-Versionen?
  • Aktionselemente, die nicht in ActionBar mit showAsAction = "ifRoom" angezeigt werden
  • Android 4.0, Text auf der Aktionsleiste zeigt NIE
  • NavigationDrawerFragment funktioniert nicht mit der AppCompat Toolbar
  • Dynamisch aktivieren / deaktivieren ausblenden / ausblenden Android ActionBar Aktionssymbol
  • Upgrade auf SDK 21 - Fehler beim Aufblasen der Klasse android.support.v7.internal.widget.ActionBarContainer
  • Android: ActionBar wie der Aktien-Browser
  • Warum isst Android Lint über String.format mit Standard-Gebietsschema, wenn explizit Locale.US verwendet?
  • Fehlende arch-spezifische Emulator-Programm-Fehler beim Launcing avd in Eclipse
  • Up Navigation (Action Bar's Back Pfeil) funktioniert nicht für Fragmente
  • Android: Ändern Sie die gesamte App Layout Richtungen programmgesteuert
  • 5 Solutions collect form web for “Kann keine Aktionsleiste in Fragmentklasse bekommen”

    Eine statische Klasse kann keine privaten Felder einer anderen Klasse sehen. Du musst getActivity().getActionBar() , um es abzurufen.

    @Robert Estivil Wenn Sie ActionBarActivity dann verwenden Sie diese:

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

    Obwohl ich hier spät bin. Ich fand arul's Antwort perfekt, aber jetzt ActionbarActivity ist veraltet, so geringfügige Änderung an dieser Antwort wird den Job beenden:

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

    Mit AppCompatActivity ist es ratsam, in die Toolbar anstelle der Aktionsleiste zu wechseln, aber wenn du es nicht tust, dann benutze diese, um eine Instanz von Aktionsleiste zu erhalten.

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

    Wenn du SherlokActionBar benutzt hast, kannst du deine Aktionsleiste mit anrufen

     ActionBar mActionBar = ((SherlockFragmentActivity) getActivity()).getSupportActionBar(); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.