Android 将列表保存到SharedRef。使用GSON空指针错误

Android 将列表保存到SharedRef。使用GSON空指针错误,android,nullpointerexception,sharedpreferences,Android,Nullpointerexception,Sharedpreferences,我有以下代码: public class CustomGesture extends Activity { private static Spinner spinner1, spinner2; private static Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.

我有以下代码:

public class CustomGesture extends Activity {

private static Spinner spinner1, spinner2;
private static Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.custom_gesture);
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    // list.add("peepu");
    // list.add("Cheecki");
    List<String> list = new ArrayList<String>();
    list.add("cheeku");
    list.add("matthu");
    SharedPreferences appSharedPrefs = PreferenceManager
            .getDefaultSharedPreferences(this.getApplicationContext());
    Editor prefsEditor = appSharedPrefs.edit();
    Gson gson = new Gson();
    String json = gson.toJson(list);
    prefsEditor.putString("MyObject", json);
    prefsEditor.commit();
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, list);
    dataAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(dataAdapter);
    btn = (Button) findViewById(R.id.btnSubmit);
    btn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                     SharedPreferences appSharedPrefs = PreferenceManager
                              .getDefaultSharedPreferences(getApplicationContext());
                              Gson gson = new Gson();
                              String json = appSharedPrefs.getString("MyObject", "");
                              List<String> list = gson.fromJson(json, null);
                    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, list);
                    dataAdapter
                            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner2.setAdapter(dataAdapter);
                }
            }).start();
        }
    });
}
公共类自定义手势扩展活动{
专用静电喷丝头1、喷丝头2;
专用静态按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.custom_手势);
喷丝头1=(喷丝头)findViewById(R.id.spinner1);
喷丝头2=(喷丝头)findViewById(R.id.spinner2);
//列表。添加(“peepu”);
//添加(“Cheecki”);
列表=新的ArrayList();
列表。添加(“cheeku”);
列表。添加(“matthu”);
SharedReferences AppSharedRefers=首选项管理器
.GetDefaultSharedReferences(此.getApplicationContext());
Editor prefsEditor=appSharedPrefs.edit();
Gson Gson=新的Gson();
字符串json=gson.toJson(列表);
putString(“MyObject”,json);
提交();
ArrayAdapter dataAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u项,列表);
数据适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头1.设置适配器(数据适配器);
btn=(按钮)findViewById(R.id.btnSubmit);
btn.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
新线程(newrunnable()){
@凌驾
公开募捐{
SharedReferences AppSharedRefers=首选项管理器
.GetDefaultSharedReferences(getApplicationContext());
Gson Gson=新的Gson();
String json=appSharedPrefs.getString(“MyObject”,即“”);
List=gson.fromJson(json,null);
ArrayAdapter dataAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u项,列表);
数据适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头2.设置适配器(数据适配器);
}
}).start();
}
});
}
}

我得到的错误如下:

04-13 13:50:20.066: E/AndroidRuntime(2358): FATAL EXCEPTION: Thread-5592
04-13 13:50:20.066: E/AndroidRuntime(2358): java.lang.NullPointerException
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.internal.$Gson$Preconditions.checkNotNull($Gson$Preconditions.java:35)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:72)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.reflect.TypeToken.get(TypeToken.java:296)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.Gson.fromJson(Gson.java:801)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.Gson.fromJson(Gson.java:768)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.Gson.fromJson(Gson.java:717)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.google.gson.Gson.fromJson(Gson.java:689)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at com.winacro.Bsquares.CustomGesture$1$1.run(CustomGesture.java:60)
04-13 13:50:20.066: E/AndroidRuntime(2358):     at java.lang.Thread.run(Thread.java:841)
04-13 13:50:20.066:E/AndroidRuntime(2358):致命异常:Thread-5592
04-13 13:50:20.066:E/AndroidRuntime(2358):java.lang.NullPointerException
04-13 13:50:20.066:E/AndroidRuntime(2358):在com.google.gson.internal.$gson$premissions.checkNotNull($gson$premissions.java:35)
04-13 13:50:20.066:E/AndroidRuntime(2358):位于com.google.gson.reflect.TypeToken.(TypeToken.java:72)
04-13 13:50:20.066:E/AndroidRuntime(2358):在com.google.gson.reflect.TypeToken.get(TypeToken.java:296)
04-13 13:50:20.066:E/AndroidRuntime(2358):位于com.google.gson.gson.fromJson(gson.java:801)
04-13 13:50:20.066:E/AndroidRuntime(2358):位于com.google.gson.gson.fromJson(gson.java:768)
04-13 13:50:20.066:E/AndroidRuntime(2358):位于com.google.gson.gson.fromJson(gson.java:717)
04-13 13:50:20.066:E/AndroidRuntime(2358):位于com.google.gson.gson.fromJson(gson.java:689)
04-13 13:50:20.066:E/AndroidRuntime(2358):在com.winacro.Bsquares.custom手势$1$1.run(custom手势.java:60)
04-13 13:50:20.066:E/AndroidRuntime(2358):在java.lang.Thread.run(Thread.java:841)处

我认为这个错误是因为我在fromJSON中使用null作为参数,但是我认为我不能使用列表来代替null参数使用什么?

SharedReferences用于存储少量数据,例如标志和静态字符串,您尝试了一种解决方法来存储json格式的字符串,它适用于非常小的json对象,否则您需要使用sqlite,这是一个tutoial

ArrayAdapter dataAdapter=new ArrayAdapter(getApplicationContext(),android.R.layout.simple_spinner_项,list);好的,我解决了它,我需要使我馈送到微调器的数组与列表类型兼容。我尝试将数据添加为>>db.addDATA(新数据(“Srinivas”,“919999999”);但我要把它保存为04-13 17:48:33.246:D/CHECKKK********(22741):com.example.cheeki。Data@429af408当我找回它的时候!