gpt4 book ai didi

java - Android:SharedPreferences 有时会导致 NullPointEreException 错误

转载 作者:行者123 更新时间:2023-12-02 09:44:00 25 4
gpt4 key购买 nike

我发布了我的应用程序,发现 SharedPreferences 有时会导致 NullPointException 几次。大多数情况下它运作良好。我仍然不明白错误的原因和时间。

我的代码和日志是这样的。

Activity

protected void onCreate(...) {
super.onCreare(savedInstanceState);
setContentView(R.layout.activity_layout);

 // NullPointException here
ASharedPreferences.saveCurrentNumber();
ASharedPreferences.getCurrentNumber();
}

ASharedPreferences.java

public class ASharedPreferences {

private static final String PREF_NAME = 'Number';
private static ASharedPreferences sInstance;
private static SharedPreferences sSharedPref;
private static SharedPreferences.Editor sEditor;

private ASharedPreferences(Context context) {
sSharedPref = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
sEditor = sSharedPref.edit();
}


public static void init(Context context) {
if (sInstance == null) {
sInstance = new ASharedPreferences(context);
}
}

public static void saveCurrentNumber() {
sEditor.putInt("current_number", getCurrentNumber() + 1);
sEditor.apply();
}

public static int getCurrentNumber() {
return sSharedPref.getInt("current_number", 0);
}

}

日志在这里。不过好像没什么用。

Caused by: java.lang.NullPointerException:

at com...ASharedPreferences.getCurrentNumber (ASharedPreferences.java:30)

at com.ASharedPreferences.saveCurrentNumber (ASharedPreferences.java:25)

at com...Activity.onCreate (Activity.java:63)

为什么设置了默认值还是会引发NullPointException?

可能是什么原因?

更新

MainActivity.java

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

ASharedPreferences.init(this);
}

最佳答案

尝试这种方法而不是创建类的实例。

protected void onCreate(...) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);

 // NullPointException here
ASharedPreferences.saveCurrentNumber(MyActivity.this);
int n=ASharedPreferences.getCurrentNumber(MyActivity.this);
}
public class ASharedPreferences {

private static final String PREF_NAME = 'Number';

public static void saveCurrentNumber(Context context) {
SharedPreferences sSharedPref=context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor sEditor=sSharedPref.edit();
sEditor.putInt("current_number", getCurrentNumber(context) + 1);
sEditor.apply();
}

public static int getCurrentNumber(Context context) {
SharedPreferences sSharedPref=context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor sEditor=sSharedPref.edit();
return sSharedPref.getInt("current_number", 0);
}

}

关于java - Android:SharedPreferences 有时会导致 NullPointEreException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56822535/

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