6

Tôi đã tạo ra một PreferenceFragment với hai loại và một hộp kiểm, tuy nhiên, khi tôi hiển thị nó trong ứng dụng của tôi, nền có vẻ trong suốt.PreferenceFragment với nền trong suốt?

Tôi có thể thấy các hoạt động chính, các trường và các PreferenceFragment được đặt trên đầu trang của những người từ hoạt động chính ... giải pháp cho điều này là gì?

Trong hoạt động chính của tôi tôi làm điều này để mở PreferenceFragment khi nút cài đặt được chọn:

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

đang PreferenceFragment của tôi trông như thế này: public class SettingsFragment kéo dài PreferenceFragment {

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

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

My preferences.xml trông giống như sau:

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

Tôi đã thử câu trả lời khác trên Stack Overflow được đề xuất và thêm vào Fragment Preference của tôi, mặc dù nó chặn các trường hiển thị từ Activity chính, nó chỉ xuất hiện là mặt nạ, vì các trường đoạn cũng bị ảnh hưởng bởi màu sắc mà tôi đã đặt:

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

Cảm ơn sự trợ giúp !!!

EDIT: Tôi nghĩ rằng tôi đã trả lời câu hỏi của riêng tôi trong khi gõ những dòng này ra ... Tôi nói thêm:

addPreferencesFromResource(R.xml.preferences); 

Sau khi thực hiện:

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

Đó có phải là cách thích hợp để làm giải quyết này?

Trả lời

-3

Thử thay đổi tất cả các mục nhập Fragment của bạn thành android.app.Fragment thay vì android.support.v4.app.Fragment. Ngoài ra, hãy chắc chắn rằng bạn đang truy cập trình phân mảnh của bạn với getFragmentManager() không getSupportFramentManager().

tham khảo: http://ausmarton.blogspot.com.au/2014/01/preferencefragment-shows-up-with.html

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. –

+0

Yea bạn nói đúng. Đoán tôi chỉ là lười biếng. Fleshed ra câu trả lời nhiều hơn một chút. – himahimahima

7

Thêm này trong Fragment của bạn (SettingsFragment) kéo dài 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; 
}