gpt4 book ai didi

android - SharedPreferences.getBoolean 每次都返回 true

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:47 24 4
gpt4 key购买 nike

我制作了一个类来处理重要的数据更改,例如 App 购买状态和其他内容。

为了这个目标,我创建了一个类来设置和读取值。但问题是每当我调用 appIsPurchased() 方法时,结果都是真实的,但自从应用程序安装和首次启动以来它一直没有改变。

这是我的代码:

/**
* Created by neemasa on 5/29/14.
* This class handles more crucial data values within app.
*/
public class AppCore {

private SharedPreferences settings;
private String keyPurchase = "app_purchased";
private Context context;

public AppCore(Context context){
this.context = context;
settings = PreferenceManager.getDefaultSharedPreferences(context);
}

public void setAppInPurchasedMode(String status){
if (status.equals("successful")){
settings.edit().putBoolean(keyPurchase, true).commit();
}else if (status.equals("failed")){
settings.edit().putBoolean(keyPurchase, false).commit();
}

}
public boolean appIsPurchased(){
boolean purchased = false;
if (settings.getBoolean(keyPurchase,true)){
purchased = true;
}
return purchased;
}

}


第一个问题:我的代码有问题吗?如果有那么为什么 appIsPurchased() 总是返回 true?
问题 2:默认情况下共享首选项中的所有值都为真吗?


与此同时,当我在我的代码中使用此类时, toast “已购买!”即使在应用程序首次运行时也会运行。

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

AppCore appCore = new AppCore(getApplicationContext());
if (appCore.appIsPurchased()){
Toast.makeText(getApplicationContext(),"Purchased!",Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(getApplicationContext(),"Not Purchased!",Toast.LENGTH_SHORT).show();
}
}

最佳答案

其实你的代码有问题!!这就是为什么它总是显示已购买!!

 if (settings.getBoolean(keyPurchase,true)){
purchased = true;
}

在这一行中,如果不使用 keyPurchased 标签,则默认传递真值所以当你调用

if (appCore.appIsPurchased()){

它总是返回一个真值。解决方案是确保在调用它们之前设置首选项值。希望这有帮助

关于android - SharedPreferences.getBoolean 每次都返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23934645/

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