我创建了一个类来处理重要的数据更改,例如App Purchase Status和其他东西.

为了这个目标,我创建了一个用于设置和读取值的类.但问题是每当我调用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;

}

}

问题1:我的代码有问题吗?如果有,那么为什么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();

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐