Java 为什么共享偏好包含我没有的东西';放不下?

Java 为什么共享偏好包含我没有的东西';放不下?,java,android,sharedpreferences,contains,Java,Android,Sharedpreferences,Contains,问题解决了 在我第一次关闭共享首选项之前,共享首选项应该包含任何内容,但错误显示IndexOutOfBoundsExceptions。为什么 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SharedPreferences pref = getSha

问题解决了

在我第一次关闭共享首选项之前,共享首选项应该包含任何内容,但错误显示IndexOutOfBoundsExceptions。为什么

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SharedPreferences pref = getSharedPreferences("myfile", MODE_PRIVATE);
    SharedPreferences.Editor editor = pref.edit();
    editor.commit();
    if(pref.contains("key")){
    List.addAll(pref.getStringSet("key", null));
    };         
}

@Override
public void onStop(){
    super.onStop();
    if(size>0){
    Set<String> set1 = new HashSet<String>();
    set1.addAll(List);
    SharedPreferences pref = getSharedPreferences("myfile", MODE_PRIVATE);
    SharedPreferences.Editor editor = pref.edit();
    editor.putStringSet("key", set1);
    editor.commit();
    };
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedReferences pref=GetSharedReferences(“myfile”,模式\私有);
SharedReferences.Editor=pref.edit();
commit();
if(pref.contains(“key”)){
addAll(pref.getStringSet(“key”,null));
};         
}
@凌驾
公共void onStop(){
super.onStop();
如果(大小>0){
Set set1=新的HashSet();
set1.addAll(列表);
SharedReferences pref=GetSharedReferences(“myfile”,模式\私有);
SharedReferences.Editor=pref.edit();
编辑器.putStringSet(“键”,set1);
commit();
};
}
我不确定要在logcat上查找什么,所以我只是将其全部粘贴

06-05 13:05:30.023:E/AndroidRuntime(1625):致命异常:主 06-05 13:05:30.023:E/AndroidRuntime(1625):java.lang.RuntimeException:无法启动活动ComponentInfo{com.example.词汇表/com.example.词汇表.MainActivity}:java.lang.IndexOutOfBoundsException:索引0无效,大小为0 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.ActivityThread.access$600(ActivityThread.java:130) 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.os.Handler.dispatchMessage(Handler.java:99)上 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.os.Looper.loop(Looper.java:137) 06-05 13:05:30.023:E/AndroidRuntime(1625):位于android.app.ActivityThread.main(ActivityThread.java:4745) 06-05 13:05:30.023:E/AndroidRuntime(1625):位于java.lang.reflect.Method.Invokenactive(本机方法) 06-05 13:05:30.023:E/AndroidRuntime(1625):位于java.lang.reflect.Method.invoke(Method.java:511) 06-05 13:05:30.023:E/AndroidRuntime(1625):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 06-05 13:05:30.023:E/AndroidRuntime(1625):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 06-05 13:05:30.023:E/AndroidRuntime(1625):在dalvik.system.NativeStart.main(本机方法) 06-05 13:05:30.023:E/AndroidRuntime(1625):由以下原因引起:java.lang.IndexOutOfBoundsException:索引0无效,大小为0 06-05 13:05:30.023:E/AndroidRuntime(1625):位于java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 06-05 13:05:30.023:E/AndroidRuntime(1625):在java.util.ArrayList.get(ArrayList.java:304) 06-05 13:05:30.023:E/AndroidRuntime(1625):在com.example.词汇表.MainActivity.PrintWords(MainActivity.java:70) 06-05 13:05:30.023:E/AndroidRuntime(1625):在com.example.词汇表.MainActivity.ShitsToDoWhenCodeSucks(MainActivity.java:118) 06-05 13:05:30.023:E/AndroidRuntime(1625):在com.example.词汇表.MainActivity.onCreate(MainActivity.java:145)上 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.Activity.performCreate(Activity.java:5008)上 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)上 06-05 13:05:30.023:E/AndroidRuntime(1625):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
06-05 13:05:30.023:E/AndroidRuntime(1625):。。。11更多

您是否有名为“myfile”的首选项文件


如果此名称的首选项文件不存在,则在检索编辑器(sharedReferences.edit())然后提交更改(editor.commit())时将创建该文件。

从何处获取该异常?哪一行?我相信这是第一个if语句,因为如果我删除它,应用程序的其余部分会运行得很好。你应该查看异常-它会显示是哪一行导致了问题。我不确定它是哪一行。我应该做什么来检查呢?正如我所说的,看看异常。堆栈跟踪应该为您提供大量信息。我要问的是,您是否有一个xml文件作为首选项,并在onCreate中以-->SharedReferences.Editor=pref.edit()的形式编写;putString(“key”、“defaultval”);commit();另外,请签出您的“列表”。你是说ArrayList对象吗?