2015-01-23 3 views
0

환경 설정 화면을로드하려고하는데 표시되지 않는 것 같습니다. Activity를로드 할 수는 있지만 실제 환경 설정은 볼 수 없습니다. SettingsOctivity에 setContentView(R.layout.activity_settings);을 추가하는 것과 같은 StackOverflow에서 다른 솔루션을 시도했지만 성공하지 못했습니다. SettingsActivity.java환경 설정 환경 설정이 표시되지 않습니다.

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 

public class SettingsActivity extends ActionBarActivity { 

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

     // Display the fragment as the main content. 
     getFragmentManager().beginTransaction() 
       .replace(android.R.id.content, new SettingsFragment()) 
       .commit(); 
    } 

} 

preferences.xml로

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory 
     android:title="@string/pref_start" 
     android:key="pref_key_storage_settings"> 
     <CheckBoxPreference 
      android:key="pref_key_auto_exit" 
      android:summary="@string/pref_summary_exit" 
      android:title="@string/pref_title_exit" 
      android:defaultValue="false"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

SettingsFragment.java

import android.os.Bundle; 
import android.preference.PreferenceFragment; 
import android.view.LayoutInflater; 
import android.view.ViewGroup; 

public class SettingsFragment extends PreferenceFragment { 

    public SettingsFragment() { 
    } 

    public void onCreate(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 
+0

왜 현재의 활동에 'android.R.id.content'가 존재하지 않습니까? 나는'android.R.id.content'가 활동의 근본 요소라고 생각했습니다. –

+0

Off topic : 'savedInstanceState == null' 일 때만 조각 트랜잭션을 수행하려고합니다. 사용자가 활동을 열 때 한 번만 수행하면됩니다. 사용자가 화면을 회전하면로드 된 상태로 유지됩니다. –

답변

0

활동이 차례로에만 지원 Fragment을 사용할 수 있습니다 FragmentActivity 확장 ActionBarActivity 확장 때문에

s와 그들의 d 에스펜 던트. 그러나 PreferenceFragment은 기본 Fragment의 자손입니다. 최소 SDK가 11보다 높더라도이 두 가지는 상호 운용 할 수 없습니다.

1) 가장 PreferenceActivity을 확장 할 기본 환경 설정

활동을 이동

당신은 두 가지 옵션이 있습니다. 그런 다음 현재 PreferenceFragment을 계속 사용할 수 있습니다. 단점은 API 11+ (또는 14+) 및 API 21+에서 개별적으로 스타일링을 처리해야한다는 것입니다 (그러나 완료 할 수 있음). Full documentation on native preferences

2) EASY : https://github.com/kolavar/android-support-v4-preferencefragment

당신에게 : 전폭적 인지지를 이동 여기에서 찾을 수 있습니다 PreferenceFragment의 사회 만든 백 포트가 (실제로이 다수 있지만, 나는이 하나를 사용)이

프로젝트에 라이브러리를 가져온 다음 import 문을 변경 한 후 컴파일 할 수 있어야합니다. import android.preference.PreferenceFragment; 대신 import android.support.v4.preference.PreferenceFragment;이 있어야합니다. 당신이 11 아래 API를 대상으로하고 당신은 당신이 선택의 여지가 있지만이없는 작업 표시 줄이 필요하면

을 결정하는 방법

옵션 2.이 옵션은 또한 당신이 헤더 같은 PreferenceActivity 설탕을 필요로하지 않는 경우 최고, 큰 화면에서의 마스터 - 디테일보기 등 (다시 문서보기)

관련 문제