6

Ho creato un PreferenceFragment con due categorie e una casella di controllo, tuttavia, quando lo visualizzo nella mia app, lo sfondo sembra trasparente.PreferenceFragment con sfondo trasparente?

Riesco a vedere le attività principali, i campi e PreferenceFragment che sono posti sopra a quelli dell'attività principale ... qual è la soluzione a questo?

Nella mia attività principale che sto facendo questo per aprire il PreferenceFragment quando si seleziona il pulsante Impostazioni:

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

Il mio codice PreferenceFragment assomiglia a questo: public class SettingsFragment estende PreferenceFragment {

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

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

Il mio preferences.xml assomiglia a questo:

<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>  

Ho provato l'altra risposta su Stack Overflow suggerita e l'ho aggiunta al mio Preference Fragment, tuttavia, anche se blocca i campi visibili dall'attività principale, sembra proprio che sia una maschera, perché anche i campi dei frammenti sono influenzati dal colore che ho impostato:

@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; 
} 

Grazie per l'aiuto !!!

EDIT: Penso che ho risposto alla mia domanda proprio durante la digitazione questo fuori ... ho aggiunto:

addPreferencesFromResource(R.xml.preferences); 

Dopo aver fatto:

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

è che il modo corretto di fare a risolvere questo?

risposta

-3

Provare a modificare tutte le importazioni di Fragment in android.app.Fragment invece di android.support.v4.app.Fragment. Inoltre, assicurati di accedere al tuo fragmentmanager con getFragmentManager() not getSupportFramentManager().

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

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. –

+0

Sì hai ragione. Credo di essere stato solo pigro. Spremi la risposta un po 'di più. – himahimahima

7

Aggiungi questo nella vostra Fragment (SettingsFragment) che si estende PreferenceFragment:

@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; 
}