gpt4 book ai didi

java - 尝试使用 Asynctask 将从服务器获取的值存储到共享首选项时出现 RuntimeException

转载 作者:行者123 更新时间:2023-12-01 10:29:27 24 4
gpt4 key购买 nike

我正在使用共享首选项来检查该应用程序是否是第一次使用。如果该应用程序是第一次使用,则会显示注册屏幕,之后 MainActivity 将显示注册是否成功完成或稍后使用。应用程序首次运行时会显示注册屏幕,但问题出在注册中。同时从 MainActivity 调用共享首选项以在其中插入值。问题是 RuntimeException 。这就是我正在做的事情......

这是我的 MainActivity.java

 SharedPreferences sp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
firtst_time_check();
setContentView(R.layout.available_items);.....}

这是first_time_check()

private boolean firtst_time_check(){
sp = PreferenceManager.getDefaultSharedPreferences(this);
String first = sp.getString("first", null);
if (first == null){
Intent i = new Intent(getBaseContext(), MainActivity.class);
startActivity(i);
}
return false;
}

这是来自注册屏幕的代码,其中此行抛出异常 MainActivity set = new MainActivity();

JSONArray a = o.optJSONArray("status");
JSONObject obj = a.optJSONObject(0);
String uid = obj.optString("RegistrationID");
MainActivity set = new MainActivity();
set.sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String value = set.sp.getString("RegistrationID", uid);
SharedPreferences.Editor editor = set.sp.edit();
editor.putString("first", value);
editor.commit();

这是 logcat 中显示的内容

lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

最佳答案

否,需要使用 MainActivity 中的 sp,通过创建 Activity 对象来将值保存在 SharedPreferences注册屏幕因为PreferenceManager.getDefaultSharedPreferences还返回SharedPreferences实例,我们可以使用它来保存其中的键值。更改:

MainActivity set = new MainActivity();
set.sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(
getApplicationContext());

关于java - 尝试使用 Asynctask 将从服务器获取的值存储到共享首选项时出现 RuntimeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35173611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com