6

Utworzono PreferenceFragment z dwiema kategoriami i jednym polem wyboru, jednak gdy wyświetlam go w mojej aplikacji, tło wydaje się przezroczyste.PreferenceFragment z przezroczystym tłem?

Widzę główne działania, pola i PreferenceFragmenty są ułożone nad najważniejszymi z głównego działania ... jakie jest rozwiązanie tego?

W moim głównym działalności Robię to, aby otworzyć PreferenceFragment gdy przycisk Ustawienia wybrano:

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

Mój kod PreferenceFragment wygląda następująco: public class SettingsFragment rozciąga PreferenceFragment {

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

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

Moje preferencje.xml wygląda następująco:

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

Próbowałem, co sugerowała inna odpowiedź na temat Stack Overflow i dodałem to do mojego Fragmentu Preferencji, chociaż blokuje ono pola widoczne z Głównej Aktywności, to po prostu wydaje się być maską, ponieważ pola fragmentów również są pod wpływem kolor, który ustawiłem:

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

Dzięki za pomoc !!!

EDIT: Myślę, że odpowiedział na moje własne pytanie podczas pisania tego na zewnątrz ... I dodaje:

addPreferencesFromResource(R.xml.preferences); 

Po wykonaniu:

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

Czy to właściwy sposób należy rozwiązać ten problem?

Odpowiedz

-3

Spróbuj zmienić wszystkie importowane fragmenty na android.app.Fragment zamiast android.support.v4.app.Fragment. Upewnij się także, że uzyskujesz dostęp do swojego fragmentmanager za pomocą getFragmentManager(), a nie getSupportFramentManager().

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

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. –

+0

Masz rację. Chyba byłem po prostu leniwy. Ulepszyłem odpowiedź nieco bardziej. – himahimahima

7

dodać to w swojej fragment (SettingsFragment), która rozciąga 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; 
} 
Powiązane problemy