2012-11-23 3 views
0

동작하지 않습니다, 그것을 얻이 수없는 것. 간단한 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"

답변

0

사용하여 안드로이드로 꽤 이상한 것 같다. 나는 Preference를위한 코드를 보지 않았지만, 아마도 문자열을 해석하지는 않지만, 단지 '@ string/line_size_key'를 환경 설정이 저장된 토큰으로 사용한다.

당신은 정말 당신의 선호의 이름이 자원 조회 당신이되고 싶지 않아? 사용자가 기기에서 언어를 변경하면 환경 설정이 사라질 것입니다.

관련 문제