2014-07-20 6 views
0

here을 읽었습니다. 환경 설정이 자동으로 유지됩니다. 지침을 따르려고했지만 확인란의 기본값은 항상 있습니다. 내 코드는 다음과 같이 진행됩니다환경 설정이 android에 유지되지 않습니다

1) 나는 기본 설정 화면이 열립니다 메뉴가 있습니다

public class SettingsFragment extends PreferenceFragment { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preference_screen); 
} 

}

: 설정을로드

int id = item.getItemId(); 
if (id == R.id.action_settings) { 
      { 
      Intent myIntent = new Intent(this, PreferencesActivity.class); 
      startActivity(myIntent); 
      } 

2) 환경 조각 클래스를,

3) 그리고 조각을로드하는 활동 :

public class PreferencesActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getFragmentManager().beginTransaction() 
      .replace(android.R.id.content, new SettingsFragment()) 
      .commit(); 
} 
} 

환경 설정 화면 XML :

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
<CheckBoxPreference android:enabled="true" 
android:title="@string/ShowAdsTitle" 
android:summaryOn="@string/ShowAdsOnPreference" 
android:selectable="true" 
android:summaryOff="@string/ShowAdsOnPreference" 
android:key="@string/value_showads_preference"/> 
</PreferenceScreen> 

는 어떻게 든 내 설정이 지속되지 않습니다. android : 각 설정에 대해 키가 설정됩니다. 사전에

감사합니다! 에서 onCreate에서 MainActivity에서

:

Intent myIntent = new Intent(this, PrefActivity.class); 
    startActivity(myIntent); 

이 환경 설정 작업을 엽니 다

+0

xml 파일도 포함시킬 수 있습니까? – vandus

+0

@vandus는 조각을위한 xml을 추가했습니다. – Anton

+0

다른'Activity'보다는'PreferenceActivity'에서 사용하려고합니다. – CommonsWare

답변

1
android:key="value"/> 

은 안드로이드에 대한 직접 문자열을 배치하십시오 : 키를 대신 값의 문자열로 번역 된 키 값에 액세스 할 수 없게됩니다.

+0

이것도 같은 결과를 보았습니다, 미안 해요. – Anton

+0

죄송합니다, 제 잘못; 그 매력처럼 작동! – Anton

1

그것은 내가거야 내 단계를 설명하고 나를 위해 작동합니다.

public class PrefActivity extends Activity 
{ 
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    getFragmentManager().beginTransaction() 
      .replace(android.R.id.content, new SettingsFragment()) 
      .commit(); 
} 
} 

그러면 SettingFragment가 시작됩니다.

@TargetApi(Build.VERSION_CODES.HONEYCOMB) public class SettingsFragment extends PreferenceFragment 
{ 
@Override public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preference_screen); 
} 
} 

는 그리고 이것은 설정 XML 코드입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<CheckBoxPreference 
    android:enabled="true" 
    android:title="show ads" 
    android:summaryOn="show ads on" 
    android:selectable="true" 
    android:summaryOff="show ads on" 
    android:key="value"/> 
</PreferenceScreen> 

나는 Preferences.class입니다 클래스의 어떤 종류의 확실하지 오전하지만 문제가 될 수 있습니다. 어쨌든,이 코드는 작동이 잘 확인하고 환경 설정을 선택하거나 선택 취소하고 다시 양식을가는 후에 그런 식으로 유지하고 그것에 :

+0

아, 질문 중간에 코드를 리팩터링했습니다. (지금 편집했습니다. 환경 설정은 PreferencesActivity입니다. 또한 코드에서 중요한 변경 사항을 발견하지 못했습니다. – Anton

+0

테스트를 위해 어떤 장치를 사용하고 있습니까? API 수준? – vandus

+0

preference_settings.xml은 res 폴더 – vandus

관련 문제