无法将值传递给另一个方法的方法检索错误:java.util.HashSet无法强制转换为java.lang.String

时间:2014-02-10 10:30:40

标签: java android sharedpreferences local-database

这里提到的代码我试图在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"));

    }

0 个答案:

没有答案