2015-01-12 81 views
0

我有一個簡單的商店活動,它使用SharedPreferences來存儲各種數據。問題是,當我點擊購買時,我可以多次購買它,每次花錢從硬幣中拿走。請幫我解決一下這個。需要幫助格式化和共享偏好保存

這是我的代碼:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR); 
    getActionBar().hide(); 
    setContentView(R.layout.shop_layout); 
    ImageButton lives = (ImageButton) findViewById(R.id.lives); 
    final Button hardmode = (Button) findViewById(R.id.hardmode); 
    final Button reversedMode = (Button) findViewById(R.id.reversedmode); 
    final SharedPreferences shop = getSharedPreferences("Shop", Context.MODE_PRIVATE); 
    final int[] livesPrice = {shop.getInt("livesPrice", 10)}; 
    final int[] hardmodePrice = {shop.getInt("hardmodePrice", 15)}; 
    final int[] reversedModePrice = {shop.getInt("reverseModePrice", 20)}; 
    final int[] coins = {shop.getInt("money", 10000)}; 
    final boolean[] hardmodeBoolean = {shop.getBoolean("hardmode", false)}; 
    final boolean[] reversedModeBoolean = {shop.getBoolean("reversedMode", false)}; 
    if(hardmodeBoolean[0]){ 
     hardmode.setText("Purchased"); 
    } 
    if(reversedModeBoolean[0]){ 
     reversedMode.setText("Purchased"); 
    } 
    TextView price1 = (TextView) findViewById(R.id.price1); 
    final TextView money = (TextView) findViewById(R.id.money); 
    Typeface tf = Typeface.createFromAsset(getAssets(), "font/cricket.ttf"); 
    price1.setTypeface(tf); 
    price1.setText("=" + livesPrice[0]); 
    money.setTypeface(tf); 
    money.setText("Coins " + String.valueOf(coins[0])); 
    lives.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (coins[0] >= livesPrice[0]) { 
       coins[0] = coins[0] - livesPrice[0]; 
       livesPrice[0] = livesPrice[0] + 10; 
       int numberOfLives = shop.getInt("numberOfLives", 1); 
       numberOfLives = numberOfLives + 1; 
       SharedPreferences.Editor editor = shop.edit(); 
       editor.putInt("numberOfLives", numberOfLives); 
       editor.putInt("money", coins[0]); 
       editor.commit(); 
       money.setText("Coins " + String.valueOf(coins[0])); 
      } 
     } 
    }); 
    hardmode.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      SharedPreferences.Editor editor = shop.edit(); 
        if (coins[0] >= hardmodePrice[0]) { 
         coins[0] = coins[0] - hardmodePrice[0]; 
         editor.putBoolean("hardmode", true); 
         editor.putInt("hardmodePrice", 0); 
         editor.putInt("money", coins[0]); 
         editor.apply(); 
         money.setText("Coins " + String.valueOf(coins[0])); 
         hardmode.setText("Purchased"); 
         hardmodeBoolean[0] = shop.getBoolean("hardmode", true); 
        } 
    } 
    }); 
    reversedMode.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      SharedPreferences.Editor editor = shop.edit(); 
        if (coins[0] >= reversedModePrice[0]) { 
         coins[0] = coins[0] - reversedModePrice[0]; 
         editor.putBoolean("reversedMode", true); 
         editor.putInt("reversedModePrice", 0); 
         editor.putInt("money", coins[0]); 
         editor.apply(); 
         money.setText("Coins " + String.valueOf(coins[0])); 
         reversedMode.setText("Purchased"); 
         reversedModeBoolean[0] = shop.getBoolean("reversedMode", true); 
        } 
     } 
    }); 

} 
+1

那麼真正的問題是什麼? – Guardanis

+0

當我調用'editor.apply()'或'editor.commit()'時,PriceValue不會更改爲0,因此它仍然可以從硬幣 – Traabefi

+2

中取得該值,您不將它設置爲0.您將其設置爲0硬幣[0] =硬幣[0] - livesPrice [0]; – Izu

回答

0

嘗試改變

硬幣[0] =硬幣[0] - livesPrice [0];

coins [0] - = livesPrice [0];

+0

問題不在於設置硬幣價值微調價格。但隨着價格節約共享的首選項 – Traabefi