2014-01-30 2 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 서비스를 사용하지 않고 기본 레이아웃을 부 풀릴 수있는 방법이 있습니까? 당신이 onCreateView()을

사용할 필요가없는

답변

-2

을 수행 할 수 있습니다

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")을 정의하고 자바 코드

<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(); 
관련 문제