这里提到的代码我试图在ArrayList中插入值并在会话存储中保存arrayList,而每次键都不同。现在我的目标是通过传递Spinner的“位置”来获取所选值。这是两个方法用于保存SharePreferences中的值我在尝试从 getSpinnerSelectedValue 方法中检索值时遇到错误。
public static void setValuesInSession(Context c,String key,List<String> myArrayList)
{
SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(c);
SharedPreferences.Editor sEdit=sPrefs.edit();
Set<String> set = new HashSet<String>();
Log.i("myArrayList SharePrefereces",""+myArrayList +"::key::"+key);
set.addAll(myArrayList);
sEdit.putStringSet(key,set);
sEdit.commit();
}
public static List<String> getValuesOfSession(Context c,String key)
{
SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(c);
SharedPreferences.Editor sEdit=sPrefs.edit();
Set<String> set = new HashSet<String>();
set = sPrefs.getStringSet(key,null);
List<String> setList=new ArrayList<String>(set);
return setList;
}
public static void setSpinnerSelectedValue(Context c,String key,String value)
{SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(c);
SharedPreferences.Editor editor=pref.edit();
editor.putString(key,value);
}
public static String getSpinnerSelectedValue(Context c,String key)
{
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(c);
String val = sharedPrefs.getString(key,null);
return val;
}
我如何在Activity中使用此代码:
SessionManager.setValuesInSession(getActivity().getApplicationContext(),menuFieldInstance.getFieldLabel().toString(),[0100,0200,0300,0400,0500]);
siteSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
Log.i("Spinner Selected Value", "" + position);
List<String> arrayList = new ArrayList<String>();
arrayList = SessionManager.getValuesOfSession(getActivity().getApplicationContext(),menuFieldInstance.getFieldLabel());
Log.i("arrayList Values",""+arrayList);
Log.i("arrayList ",""+arrayList.get(position).toString());
SessionManager.setSpinnerSelectedValue(getActivity().getApplicationContext(),menuFieldInstance.getFieldLabel(),arrayList.get(position).toString());
}
尝试从“ getSpinnerSelectedValue
”mthod中检索值时出现错误?
这里是错误列表:
02-11 02:23:05.455: E/AndroidRuntime(23432): FATAL EXCEPTION: main
02-11 02:23:05.455: E/AndroidRuntime(23432): java.lang.ClassCastException: java.util.HashSet cannot be cast to java.lang.String
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:205)
02-11 02:23:05.455: E/AndroidRuntime(23432): at com.mrfs.android.surveyapp.util.SessionManager.getSpinnerSelectedValue(SessionManager.java:85)
02-11 02:23:05.455: E/AndroidRuntime(23432): at com.mrfs.android.surveyapp.activities.fragments.SiteFragmentActivity$3.onClick(SiteFragmentActivity.java:513)
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.view.View.performClick(View.java:4211)
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.view.View$PerformClick.run(View.java:17267)
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.os.Handler.handleCallback(Handler.java:615)
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.os.Looper.loop(Looper.java:137)
02-11 02:23:05.455: E/AndroidRuntime(23432): at android.app.ActivityThread.main(ActivityThread.java:4898)
02-11 02:23:05.455: E/AndroidRuntime(23432): at java.lang.reflect.Method.invokeNative(Native Method)
02-11 02:23:05.455: E/AndroidRuntime(23432): at java.lang.reflect.Method.invoke(Method.java:511)
02-11 02:23:05.455: E/AndroidRuntime(23432): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
02-11 02:23:05.455: E/AndroidRuntime(23432): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
02-11 02:23:05.455: E/AndroidRuntime(23432): at dalvik.system.NativeStart.main(Native Method)
我正在调用方法点击按钮
siteSaveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("Session Values",SessionManager.getSpinnerSelectedValue(getActivity().getApplicationContext(),"Police Authority"));
}