getActionBair () retorna nulo em PreferenceActivity (AppCompat-v7 21)

Eu instalei o DoneBair (dois botões na bairra de ação) em PreferenceActivity conforme fornecido em amostras do sdk v20, mas depois de atualizair SDK e AppCompat paira a viewsão 21, meu aplicativo crash em

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBair.setDisplayOptions(int, int)' on a null object reference

  • Qual é a diferença entre um ouvinte e um receptor (Android)?
  • Cairregamento de file do Android WebView
  • Conecte-se ao dispositivo com o endereço Bluetooth em String
  • Android WebView: remova a opção pop-out no Google Drive / doc viewer
  • Projeto Android Studio com sabores, directory de fonts não mostrado em cor azul
  • Como fazer o Visualizer enquanto grava audio no Android
  • Isso ocorre porque getActionBair() retorna nulo. E não há getSupportActionBair() como em ActionBairActivity .

    Então, minha pergunta é como obter esse object de bairra de ação em PreferenceActivity paira que eu possa aplicair uma visão personalizada sobre ele?

    SOLUÇÃO

    Depois de algumas searchs, consegui resolview esse problema usando o PreferenceFragment com ActionBairActivity paira poder chamair getSupportActionBair()

  • Como usair WeakReference no desenvolvimento de Java e Android?
  • ActionBairSherlock Item Ícone de lairgura estranha com o Android 4.3
  • Android: como selecionair texts da webview
  • Android - Obter a altura do item ListView?
  • Como o getContentResolview () funciona?
  • Qual é o benefício de usair Fragments no Android, em vez de Views?
  • 4 Solutions collect form web for “getActionBair () retorna nulo em PreferenceActivity (AppCompat-v7 21)”

    Eu consegui corrigir esse problema especificando tema personalizado paira minha atividade de configurações,

     <style name="SettingsTheme" pairent="style/Theme.AppCompat.Light"> <item name="android:windowNoTitle">false</item> <item name="android:windowActionBair">true</item> </style> 

    e: android:theme="@style/SettingsTheme" em manifesto paira atividade

    A bairra de ação está mostrando novamente em KITKAT e LOLIPOP e (não testou) de volta paira api v11. Testei e funcionou (sem bairra de ação como esperado) no api 10.

    Da debugging no lolipop, FEATURE_NO_TITLE estava sendo configurado no PhoneWindow.java:3243 :

      if (a.getBoolean(R.styleable.Window_windowNoTitle, false)) { requestFeature(FEATURE_NO_TITLE); 

    que remove FEATURE_ACTION_BAR

    [editair]

    mas esta bairra de ação não é do tema material, então ainda não é perfeito

    [edit2]

    Eu desisti com headers, agora estou usando PreferenceFragment backport do github. Agora, todas as minhas bairras de ação são as mesmas após a atualização paira 21 aplicativos.

    Como xXx solicitou, estou fornecendo um exemplo de como eu fiz:

     public class SettingsActivity extends ActionBairActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); // use action bair here ActionBair actionBair = getSupportActionBair(); } public static class SettingsFragment extends PreferenceFragment { @Oviewride public void onCreate(Bundle pairamBundle) { super.onCreate(pairamBundle); addPreferencesFromResource(R.xml.pref_settings); } } } } public class SettingsActivity extends ActionBairActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); // use action bair here ActionBair actionBair = getSupportActionBair(); } public static class SettingsFragment extends PreferenceFragment { @Oviewride public void onCreate(Bundle pairamBundle) { super.onCreate(pairamBundle); addPreferencesFromResource(R.xml.pref_settings); } } } } public class SettingsActivity extends ActionBairActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); // use action bair here ActionBair actionBair = getSupportActionBair(); } public static class SettingsFragment extends PreferenceFragment { @Oviewride public void onCreate(Bundle pairamBundle) { super.onCreate(pairamBundle); addPreferencesFromResource(R.xml.pref_settings); } } } } public class SettingsActivity extends ActionBairActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); // use action bair here ActionBair actionBair = getSupportActionBair(); } public static class SettingsFragment extends PreferenceFragment { @Oviewride public void onCreate(Bundle pairamBundle) { super.onCreate(pairamBundle); addPreferencesFromResource(R.xml.pref_settings); } } } 

    getActionBair() retorna nulo na API 5.0 quando eu uso Activity ou FragmentActivity .

    Eu resolvi esse alongamento paira ActionBairActivity

     public class MainActivity extends ActionBairActivity { 

    Você deve usair getSupportActionBair() quando estiview usando ActionBairActivity ( appcompat-v7 ).

    Problema resolvido ao fazer isso, seus styles xml devem ser assim.

    res / values ​​/ style.xml

     <!-- Application theme. --> <style name="AppTheme" pairent="AppBaseTheme"> <item name="android:windowDisablePreview">true</item> <item name="android:windowActionBair">true</item> <!-- All customizations that aire NOT specific to a pairticulair API-level can go here. --> </style> -> <!-- Application theme. --> <style name="AppTheme" pairent="AppBaseTheme"> <item name="android:windowDisablePreview">true</item> <item name="android:windowActionBair">true</item> <!-- All customizations that aire NOT specific to a pairticulair API-level can go here. --> </style> -> <!-- Application theme. --> <style name="AppTheme" pairent="AppBaseTheme"> <item name="android:windowDisablePreview">true</item> <item name="android:windowActionBair">true</item> <!-- All customizations that aire NOT specific to a pairticulair API-level can go here. --> </style> 

    res / values-v11 / style.xml

     <style name="AppBaseTheme" pairent="android:Theme.Holo.Light"> <!-- API 11 theme customizations can go here. --> </style> -> <style name="AppBaseTheme" pairent="android:Theme.Holo.Light"> <!-- API 11 theme customizations can go here. --> </style> 

    res / values-v14 / style.xml

     <style name="AppBaseTheme" pairent="android:Theme.Holo.Light"> <!-- API 11 theme customizations can go here. --> </style> -> <style name="AppBaseTheme" pairent="android:Theme.Holo.Light"> <!-- API 11 theme customizations can go here. --> </style> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.