提问者:小点点

单击后的SharedPref检查


我正在尝试做一个系统,当一个用户下载我的应用程序时,用户赚取硬币。 用户必须在安装后按下验证按钮。 是的,他能赚一个硬币。 但我正在尝试做一个禁用验证按钮后,一次点击,因为在应用程序安装后,用户可以按很多次,并赚取很多硬币。 (验证按钮:检查应用程序安装并给用户一枚硬币)当用户点击验证按钮时,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");
            }
        }
    });

共2个答案

匿名用户

好吧,有很多方法可以达到你的目的,但如果你想禁用按钮。 你可以用

bttn3.setEnabled(false);

onclick()函数的末尾。 不需要将preferences设置为false,您还应该根据您的问题设置visibility()以使按钮不可见,因为您不需要它。

匿名用户

做一件事,在onCreate()方法中,检查硬币的SharedPreferences值。 如果用户收到一枚硬币,

bttn3.setClickable(false);