6

Ich habe ein PreferenceFragment mit zwei Kategorien und einem Kontrollkästchen erstellt, aber wenn ich es in meiner App anzeigen lasse, scheint der Hintergrund transparent zu sein.PreferenceFragment mit transparentem Hintergrund?

Ich kann die Hauptaktivitäten sehen, Felder und die PreferenceFragments sind über denen der Haupttätigkeit gelegt ... was ist die Lösung dafür?

In meiner Haupttätigkeit mache ich das das PreferenceFragment zu öffnen, wenn die Schaltfläche Einstellungen gewählt:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    //handle presses on action bar items 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      getFragmentManager().beginTransaction().replace(android.R.id.content, 
        new SettingsFragment()).commit(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Mein PreferenceFragment Code sieht wie folgen aus: public class SettingsFragment erweitert PreferenceFragment {

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.preferences); 
    } 
} 

Meine preferences.xml sieht so aus:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout="@layout/fragment_settings"> 
    <PreferenceCategory 
    android:title="@string/server_prefs_title" 
    android:key="pref_key_server_settings" > 
    <CheckBoxPreference 
    android:key="pref_server_url" 
    android:title="@string/pref_server_url" 
    android:summary="@string/pref_server_url_summ" 
    android:defaultValue="true" /> 
    </PreferenceCategory> 
    <PreferenceCategory 
    android:title="@string/company_prefs_title" 
    android:key="pref_key_company_settings" > 
    </PreferenceCategory> 
</PreferenceScreen>  

Ich habe versucht, was eine andere Antwort auf Stack Overflow vorgeschlagen und fügte diese zu meinem Preference Fragment, obwohl es die Felder aus der Main Activity blockiert, scheint es nur eine Maske zu sein, weil die Fragmentfelder auch durch die beeinflusst werden Farbe, die ich einstelle:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
savedInstanceState) { 
    View view = super.onCreateView(inflater, container, savedInstanceState); 
    view.setBackgroundColor(getResources().getColor(android.R.color.black)); 

    return view; 
} 

Danke für die Hilfe !!!

EDIT: Ich denke, antwortete ich meine eigene Frage, während diese aus der Eingabe ... Ich fügte hinzu:

addPreferencesFromResource(R.xml.preferences); 

Nachdem ich:

View view = super.onCreateView(inflater, container, savedInstanceState); 
view.setBackgroundColor(getResources().getColor(android.R.color.black)); 

Ist das der richtige Weg, dies zu lösen?

Antwort

-3

Versuchen Sie, alle Ihre Fragment-Importe in android.app.Fragment statt android.support.v4.app.Fragment zu ändern. Stellen Sie außerdem sicher, dass Sie mit getFragmentManager() nicht getSupportFrame- nManager() auf Ihren Fragmentmanager zugreifen.

Referenz: http://ausmarton.blogspot.com.au/2014/01/preferencefragment-shows-up-with.html

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. –

+0

Ja, du hast Recht. Ich glaube, ich war nur faul. Die Antwort ein bisschen mehr ausgearbeitet. – himahimahima

7

Fügen Sie diese in Ihrem Fragment (SettingsFragment), die PreferenceFragment erweitert:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = super.onCreateView(inflater, container, savedInstanceState); 
    view.setBackgroundColor(getResources().getColor(android.R.color.white)); 
    return view; 
}