동작하지 않습니다, 그것을 얻이 수없는 것. 간단한 PreferenceFragment 예 내가 PreferenceFragments을 사용하여 사투를 벌인거야
내가 내부 값을 저장 한 환경 설정 파일 (GUI없이)라는 이름의 at.package.preferences이 -이 작동합니다.은 이제 사용자에 대한 기타 (공공) 설정을위한 기본 설정 화면을 만들 wan't하지만 실패 곳 여기입니다. 내 코드 :
public class ChartPreferences extends Activity {
private SharedPreferences prefs;
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart_preferences);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
btn = (Button) findViewById(R.id.button1);
getFragmentManager().beginTransaction().replace(R.id.prefs_chart_content,
new ChartPrefsFragment()).commit();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ChartPreferences.this, getLineSize(), Toast.LENGTH_SHORT).show();
}
});
}
public int getLineSize()
{
return Integer.valueOf(prefs.getString(getString(R.string.line_size_key), Helper.PREF_DEFAULT_LINE_SIZE));
}
public static class ChartPrefsFragment extends PreferenceFragment
{
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.chart_prefs);
}
}
}
그래서 기본 설정 화면 쇼와 내가 값을 선택할 때의 기본 설정에 목록에서, 그것도 괜찮아요, 5를 가정 해 봅시다. 기본 설정 목록을 다시 열면 5가 여전히 선택됩니다 (기본 설정이 어딘가에 저장됩니다 ...)
이제 저장된 값에 액세스하려고 할 때 getLineSize() 함수에서 문제가 발생합니다. 그것은 나에게 android.content.res.Resources $ NotFoundException을 준다.
나는 PreferenceScreen의 값이 저장되지 알고 있지만,이 defaultSharedPreferences에없는 것 같다
여기 단지의 경우, 내 chart_prefs.xml의 (?) :
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/chart" android:summary="@string/chart">
<ListPreference android:entries="@array/prefs_line_size" android:title="@string/line_size" android:summary="@string/line_size" android:key="@string/line_size_key" android:entryValues="@array/prefs_line_size"/>
</PreferenceCategory>
</PreferenceScreen>
선호의 이름이 자원 조회입니다 즉, 키 = "@ 문자열/line_size_key"