如何在启动时从另一个 activity 正确加载已保存的 SharedPreferences?

How to correctly load saved SharedPreferences from another activity on startup?

我认为我捕获的错误只是第一次 运行ning(仍然没有 SharedPreferences 保存,但每次我 运行应用程序(在 MainActivity 中):

Attempt to invoke virtual method 'int com.android.test.helper.PreferencesHelper.load(java.lang.String)' on a null object reference

然而,相同的函数起作用并在保存该选项的 OptionsActivity 中成功加载 key (key_foo) 下的值。 MainActivity 运行 第一次打开应用程序时立即被 OptionsActivity 取代。

MainActivity.java:

public class MainActivity {
    private PreferencesHelper preferencesHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        try {
            preferencesHelper.load("key_foo");
            recreate();
        }
        catch(Exception e) {
            Log.d("ERROR", e.getMessage());
        }
        startOptionsActivity();
    }
}

PreferencesHelper.java:

public class PreferencesHelper {
    private Activity context;
    private SharedPreferences sharedPref;
    private SharedPreferences.Editor editor;

    public PreferencesHelper (Activity activity){
        context = activity;
        sharedPref = context.getSharedPreferences("file", 0);
    }
    public int load(String key){
        sharedPref = context.getSharedPreferences("file", 0);
        return sharedPref.getInt(key, -1);
    }
    public void save(String key, int value){
        editor = sharedPref.edit();
        editor = putInt(key, value);
        editor.apply();
    }
}

OptionsActivity.java:

public class OptionsActivity {
    private PreferencesHelper preferencesHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_options);
        
        preferencesHelper.save("key_foo", 42);
        recreate();

        try {
            preferencesHelper.load("key_foo");
        }
        catch(Exception e) {
            Log.d("ERROR", e.getMessage());
        }
    }
}

Attempt to invoke virtual method 'int com.android.test.helper.PreferencesHelper.load(java.lang.String)' on a null object reference

NullPointerException 当程序尝试使用具有 null 值的对象引用时抛出。您必须在 onCreate() 部分声明 PreferencesHelper

private PreferencesHelper preferencesHelper;

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    preferencesHelper = new PreferencesHelper(this);