Android SharedReferences,不工作。变量值仍然=0

Android SharedReferences,不工作。变量值仍然=0,android,sharedpreferences,Android,Sharedpreferences,我正在寻求帮助。在我的一项活动中,我有一个可变id_钱包,我想将该值保存在SharedReferences中,并在其他活动中使用。怎么做?代码简略。我在其他类中使用变量wallet\u id public class ChooseWallet extends AppCompatActivity { public static int wallet_id; listViewChooseWallet.setOnItemClickListener(new AdapterView.

我正在寻求帮助。在我的一项活动中,我有一个可变id_钱包,我想将该值保存在SharedReferences中,并在其他活动中使用。怎么做?代码简略。我在其他类中使用变量wallet\u id

public class ChooseWallet extends AppCompatActivity {


public static int wallet_id;

        listViewChooseWallet.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            wallet_id= (position+1);
            SaveInt("key",wallet_id);
            Toast.makeText(getApplicationContext(), "Wallet number "+(position+1)+" active!", Toast.LENGTH_SHORT).show();
        }
    });

public void SaveInt(String key, int value){
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt(key, value);
    editor.commit();
}
public void LoadInt(Context mContext){
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
    walllet_id  = sharedPreferences.getInt("key", 1);
}
公共类ChooseWallet扩展AppCompative活动{
公共静态int-U-id;
listViewChooseWallet.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
钱包标识=(位置+1);
SaveInt(“钥匙”,钱包标识);
Toast.makeText(getApplicationContext(),“钱包号码”+(位置+1)+“活动!”,Toast.LENGTH\u SHORT.show();
}
});
公共void SaveInt(字符串键,int值){
SharedReferences=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
SharedReferences.Editor=SharedReferences.edit();
编辑器.putInt(键,值);
commit();
}
公共void LoadInt(上下文mContext){
SharedReferences=PreferenceManager.GetDefaultSharedReferences(mContext);
wallet_id=SharedReferences.getInt(“key”,1);
}
其他活动(简而言之):

公共类加载项扩展了AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u out);
addoutbalnce.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(Double.parseDouble(amount.getText().toString())>0&&ChooseWallet.wallet\u id!=0&&amount.getText().toString()!=null){
double amount=double.parseDouble(amount.getText().toString());
金额=(-金额);
字符串coment=commentout.getText().toString();
ChooseWallet wb=新的ChooseWallet();
LoadInt(getApplicationContext());
db.UpdateAmount(选择钱包id、金额);
db.AddTransaction(选择wallet.wallet\u id、金额、金额、id\u cat、日期);
Toast.makeText(getApplicationContext(),“Add”,Toast.LENGTH\u SHORT.show();
}
else if(Double.parseDouble(amount.getText().toString())<0 | | amount.getText().toString()==null){
amount.setError(“Error!”);
}
}
});

您的模拟器可能不保存共享参考。请在手机启动应用程序中尝试。

使用
LoadInt()
方法在其他活动中编码以获取wallet\u id值。我尝试了,但方法仍将wallet\u id设置为0或出现错误java.lang.NullPointerException:尝试调用虚拟方法“android.content.Context android.content.getApplicationContext()'在com.example.xxx.xxx.ChooseWallet.LoadInt(ChooseWallet.java:70)dude上的android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:106)上的空对象引用上,将
LoadInt
更改为
LoadInt(Context mContext){SharedReferences=PreferenceManager.GetDefaultSharedReferences(mContext);…}
然后通过从任何活动传递
getApplicationContext()
来调用它OK。我这样做了,但仍然没有设置id。\u wallet.Show从这两个活动中更新的代码
public class AddOut extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_out);
    addoutbalnce.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Double.parseDouble(amount.getText().toString()) > 0 && ChooseWallet.wallet_id != 0 && amount.getText().toString() != null) {
                double amount = Double.parseDouble(amount.getText().toString());
                amount= (-amount);
                String coment = commentout.getText().toString();
                ChooseWallet wb = new ChooseWallet();
                wb.LoadInt(getApplicationContext());


                db.UpdateAmount(ChooseWallet.wallet_id,amount);
                db.AddTransaction(ChooseWallet.wallet_id, amount, coment, id_cat, date);

                Toast.makeText(getApplicationContext(), "Add", Toast.LENGTH_SHORT).show();
            }
            else if(Double.parseDouble(amount.getText().toString()) < 0 || amount.getText().toString() == null){
                amount.setError("Error!");
            }
        }
    });