我正在尝试做一个系统,当一个用户下载我的应用程序时,用户赚取硬币。 用户必须在安装后按下验证按钮。 是的,他能赚一个硬币。 但我正在尝试做一个禁用验证按钮后,一次点击,因为在应用程序安装后,用户可以按很多次,并赚取很多硬币。 (验证按钮:检查应用程序安装并给用户一枚硬币)当用户点击验证按钮时,sharedprefs值变为False
但我不明白它不起作用。 我尝试在不同的位置实现代码,并尝试插入新的布尔值来保存“canearn”数据,但它不起作用。 谢谢你的帮助。 (对不起语法不好:()
private SharedPreferences coins;
private SharedPreferences sharedPref ;
@Override
protected void onCreate(Bundle savedInstanceState) {
coins = getSharedPreferences("Rewards", MODE_PRIVATE);
sharedPref = getSharedPreferences("canearn",MODE_PRIVATE);
bttn3 = (Button)findViewById(R.id.veribut1);
bttn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// SharedPreferences getter = getSharedPreferences("canearn", Activity.MODE_PRIVATE);
// boolean test = sharedPref.getBoolean("canearn",true);
if(sharedPref.getBoolean("canearn",true) == true) {
final List<String> installedPackages = getInstalledAppsPackageNameList();
String packageNameC = "com.********";
if (installedPackages.contains(packageNameC)) {
int coinCount = Integer.parseInt(coins.getString("Coins", "0"));
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("canearn", false); //add boolean
editor.commit(); //save
coinCount = coinCount + 500;
SharedPreferences.Editor coinsEdit = coins.edit();
coinsEdit.putString("Coins", String.valueOf(coinCount));
coinsEdit.apply();
Toast.makeText(getApplication(), "Coin Earned", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplication(), "Install and Open App first", Toast.LENGTH_LONG).show();
}
}
else
{
Log.i("app","dontcount");
}
}
});
好吧,有很多方法可以达到你的目的,但如果你想禁用按钮。 你可以用
bttn3.setEnabled(false);
在onclick()
函数的末尾。 不需要将preferences设置为false,您还应该根据您的问题设置visibility()以使按钮不可见,因为您不需要它。
做一件事,在onCreate()方法中,检查硬币的SharedPreferences值。 如果用户收到一枚硬币,
bttn3.setClickable(false);