2017-02-26 4 views
2

私のアプリケーションでは、チェックボックスがオンになっているかどうかによって、キー値を0または1として保存しようとしています。私はこれらの値を別のアクティビティで取得します。 (MyHomeを)活動2にキーの値を取得Key-Value Storeデータが取得されない

public void setDefaults(String key, String value) { 
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putString(key, value); 
    editor.commit(); 

} 
public void onCheckboxClicked(View view) { 
    // Is the view now checked? 
    boolean checked = ((CheckBox) view).isChecked(); 

    // Check which checkbox was clicked 
    switch(view.getId()) { 
     case R.id.checkBox_APBio: 
      if (checked) { 
       setDefaults("APBio", "1"); 
      } 
      else { 
       setDefaults("APBio", "0"); 
       break; 
      } 
}} 

活動1でキー値を保存する(ScienceCoursesCheck):私は値を取得しようとしたときしかし、私は空の文字列を取得しています

public static String getDefaults(String key, Context context) { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
    return preferences.getString(key, null); 
} 

public void myMethod() { 
    SharedPreferences myPrefs = getSharedPreferences("ScienceCoursesCheck", MODE_PRIVATE); 
    String APBio = myPrefs.getString("APBio",""); 
    if (APBio.equals("1")){ 
     Button myButton = new Button(this); 
     myButton.setText(APBio); 
     RelativeLayout ll = (RelativeLayout)findViewById(R.id.activity_my_home); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     ll.addView(myButton, lp); 
    } 
    } 

2番目のアクティビティが正しいSharedPreferencesファイルにアクセスしていますか?あなたはSharedPreferences内の項目を保存するときに

PreferenceManager.getDefaultSharedPreferences 

を使用しているが、あなたがそれらを取得するときに、これらは、二つの異なるSharedPreferencesファイルです

getSharedPreferences("ScienceCoursesCheck", MODE_PRIVATE); 

使用しているため

答えて

0

sharedpreferenceため、次のコードを使用します。電話

UtilsaveInfo(activityContext、_key、_value)

情報を保存したいとき。そして、情報を取得するために

Util.getInfo(getApplicationContext()、_キー)

を呼び出します。

public class Util{ 
public static void saveInfo(Context context, String key, String value) 
{ 
    try 
    { 
     PreferenceManager.getDefaultSharedPreferences(context).edit().putString(key, value).apply(); 
    } 
    catch (Exception ex) 
    { 
     Log.e(TAG," saveInfo "+ex+""); 
    } 
} 
public static String getInfo(Context context, String key) 
{ 
    try { 
     return PreferenceManager.getDefaultSharedPreferences(context).getString(key,""); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    return ""; 
} 
0

問題があります。あなたの設定方法にも同様にgetSharedPreferences("ScienceCoursesCheck", MODE_PRIVATE);を試してみてください。それとも、あなたはDefaultSharedPreferencesファイル

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 

"ScienceCoursesCheck"

SharedPreferences myPrefs = getSharedPreferences("ScienceCoursesCheck", MODE_PRIVATE); 

という名前の別のファイルから取得して保存されているためである代わりにmyPrefs

0

activity 2であなたのgetDefaults()メソッドを使用することを意味し、彼らは同じファイルではありません!

====

ソリューションは常にDefaultSharedPreferencesを使用するか、常に"ScienceCoursesCheck"という名前のファイルを使用するかである

この answergetSharedPreferencesgetDefaultSharedPreferencesの違いを参照してください。

0

DefaultSharedPreferenceに値を保存し、ScienceCoursesCheck環境設定ファイルから値を取得しようとしています。

setDefaultsの方法を試してください。getDefaultSharedPreferencegetSharedPreferenceの方法が異なります。

この相違点についてはlinkを参照してください。

public void setDefaults(String key, String value) { 
     SharedPreferences sharedPref = getApplicationContext().getDefaultSharedPreferences("ScienceCoursesCheck", MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPref.edit(); 
     editor.putString(key, value); 
     editor.commit(); 

    } 

希望、これはあなたを助けます...

関連する問題