如何正确实现Android';s共享参考?
我想保存输入值,以便在应用程序重新启动时可以调用它们。作为向导使用。我编写了下面的代码,但是没有成功地调用这些值。非常感谢您的帮助,谢谢 保存首选项方法如何正确实现Android';s共享参考?,android,sharedpreferences,Android,Sharedpreferences,我想保存输入值,以便在应用程序重新启动时可以调用它们。作为向导使用。我编写了下面的代码,但是没有成功地调用这些值。非常感谢您的帮助,谢谢 保存首选项方法 public void SavePreferences(String key, String value){ SharedPreferences portfoliopreferences = getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = portf
public void SavePreferences(String key, String value){
SharedPreferences portfoliopreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = portfoliopreferences.edit();
editor.putString(key, value);
editor.commit();
}
保存首选项输入
if(users.contains(usernull)){
pn1 = enterportfolioname.getText().toString();
denomination1 = denomination;
portfoliocurrency1 = portfoliocurrency;
user1 = new PortfolioRecord(pn1, denomination1+df.format(portfoliovalue1));
users.remove(usernull);
users.add(user1);
portfoliosdelete.add(pn1);
adapterdeletetype.notifyDataSetChanged();
portfoliolist.invalidateViews();
SavePreferences("U1C", "ýes");
SavePreferences("PN1", enterportfolioname.getText().toString());
SavePreferences("DN1", denomination);
SavePreferences("PC1", "usd");
}
加载首选项
public void LoadPreferences(){
SharedPreferences portfoliopreferences = getPreferences(MODE_PRIVATE);
String isuser1created = portfoliopreferences.getString("U1C", "");
if(isuser1created.equals("yes")){
String savedportfolioname = portfoliopreferences.getString("PN1", "");
String saveddenomination = portfoliopreferences.getString("DN1", "");
String savedporfoliocurrency = portfoliopreferences.getString("PC1", "");
pn1 = savedportfolioname;
denomination1 = saveddenomination;
portfoliocurrency1 = currencyUSD;
user1 = new PortfolioRecord(pn1, denomination1+portfoliovalue1);
users.add(user1);
portfoliosdelete.add(pn1);
calculateportfoliovalue1();
adapterdeletetype.notifyDataSetChanged();
portfoliolist.invalidateViews();
}
}
问题很简单,“ýes”并不等于“yes”: 所以你永远不会在这个块中执行代码。。。(更改其中一个。)
此外,您还可以创建一个新的
编辑器
,并在每次要保存一个值时运行commit()
。当它执行时,速度比需要的慢
您应该保留对portfoliopreferences
的类范围引用,并且只调用commit()
一次:
SharedPreferences.Editor editor = portfoliopreferences.edit();
editor.putString("U1C", "ýes");
editor.putString("PN1", enterportfolioname.getText().toString());
editor.putString("DN1", denomination);
editor.putString("PC1", "usd");
editor.commit();
并且您创建了一个不使用的字符串:
String savedportfolioname = portfoliopreferences.getString("PN1", "");
String saveddenomination = portfoliopreferences.getString("DN1", "");
...
pn1 = savedportfolioname;
denomination1 = saveddenomination;
您可以跳过以下步骤:
pn1 = portfoliopreferences.getString("PN1", "");
denomination1 = portfoliopreferences.getString("DN1", "");
问题很简单,“ýes”并不等于“yes”: 所以你永远不会在这个块中执行代码。。。(更改其中一个。)
此外,您还可以创建一个新的
编辑器
,并在每次要保存一个值时运行commit()
。当它执行时,速度比需要的慢
您应该保留对portfoliopreferences
的类范围引用,并且只调用commit()
一次:
SharedPreferences.Editor editor = portfoliopreferences.edit();
editor.putString("U1C", "ýes");
editor.putString("PN1", enterportfolioname.getText().toString());
editor.putString("DN1", denomination);
editor.putString("PC1", "usd");
editor.commit();
并且您创建了一个不使用的字符串:
String savedportfolioname = portfoliopreferences.getString("PN1", "");
String saveddenomination = portfoliopreferences.getString("DN1", "");
...
pn1 = savedportfolioname;
denomination1 = saveddenomination;
您可以跳过以下步骤:
pn1 = portfoliopreferences.getString("PN1", "");
denomination1 = portfoliopreferences.getString("DN1", "");