Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确实现Android';s共享参考?_Android_Sharedpreferences - Fatal编程技术网

如何正确实现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", "");