2014-01-30 67 views
7

我有左窗格和右窗格的多窗格视图。在正确的片段上启动一个PreferenceFragment。问题是片段看起来完全扭曲而没有任何风格。有没有办法只将主题应用于PreferenceFragment?将自定义主题应用于PreferenceFragment

我试图this,但没有奏效

我的代码

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    // create ContextThemeWrapper from the original Activity Context with the custom theme 
    final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.AppTheme_PreferenceTheme); 

    // clone the inflater using the ContextThemeWrapper 
    LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); 


    View view = super.onCreateView(localInflater, container, savedInstanceState); 

    return view; 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.app_settings_preference_layout); 
} 

我认为解决的办法没有奏效,因为我已经在膨胀的onCreate优先布局。有没有一种方法可以在不使用addPreferencesFromResource方法和仅使用LayoutInflater服务的情况下膨胀偏好布局?

回答

-2

你不需要使用onCreateView()

,您可以:

1)定义您的活动XML例如,您的应用程序布局和片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
..blabla 
<LinearLayout 
    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:name="com.xxx.MyPreferencesFragment1" //your own extended class 
     android:id="@+id/preference_fragment1"/> 
    <fragment 
     android:name="com.xxx.MyPreferencesFragment2" //your own extended class 
     android:id="@+id/preference_fragment2"/> 
</LinearLayout> 
</RelativeLayout> 

public class MyPreferencesFragment1 extends PreferenceFragment { 
    // Required empty public constructor 

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

    // Load the preferences from an XML resource 
    addPreferencesFromResource(R.xml.preferences1); 
您可以:

2)只定义在活动XML的占位符/容器布局(“R.id.fragments_layout”),并从Java代码

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/fragments_layout"> 
// only layout - dont define fragments this case 

和OFC现在你还需要抬高做休息此布局容器内的偏好xml文件

getFragmentManager().beginTransaction().replace/add(R.id.fragments_layout, new MyPreferencesFragment1()).commit(); 
getFragmentManager().beginTransaction().replace/add(R.id.fragments_layout, new MyPreferencesFragment2()).commit();