2016-05-27 6 views
1

クリックしたタスクを実行するcheckboxpreferenceがあります。タスクが失敗した場合は、チェックを外したいと思います。しかし、なぜそれが動作していないのか分かりません。CheckBoxPreferenceの値をAndroidでfalseに設定します。

あるpreferences.xml:

<CheckBoxPreference 
    android:key="@string/premium_support" 
    android:title="Premium Support" 
    android:summary="Purchase premium support" 
    android:defaultValue="false" /> 

は私が偽(オフ)にデフォルト値を設定します。

私は変更リスナーを実装アクティビティ作成:

mIabPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { 
     @Override 
     public void onIabPurchaseFinished(IabResult result, Purchase purchase) { 
      if(result.isFailure()){ 
       premium = false;           
       settings.getBoolean("premium_support", false); 

       return ; 
      } 
      else if(purchase.getSku().equals(ITEM_SKU)) { 
       premium = true; 
       settings.getBoolean("premium_support", true); 
       consumeItem(); 

      } 
     } 
    }; 

問題は、アプリ内購入が失敗した場合でも、ということである:アプリ内購入が失敗したかどうかをチェックする際に、しかし

public class settingsActivity extends AppCompatActivity 
implements SharedPreferences.OnSharedPreferenceChangeListener { 
.... 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
//Display the fragment as the main content. 
     getFragmentManager().beginTransaction() 
       .replace(android.R.id.content, new settingsFragment()) 
       .commit(); 


     PreferenceManager.setDefaultValues(this, R.xml.settings, false); 
     settings = PreferenceManager.getDefaultSharedPreferences(this); 

     settings.registerOnSharedPreferenceChangeListener(this); 
     settingPlayBilling(); 

     } 
} 
@Override 
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
     Toast.makeText(settingsActivity.this, "onSharedPreferenceChanged", Toast.LENGTH_SHORT).show(); 
     mIabHelper.launchPurchaseFlow(settingsActivity.this, ITEM_SKU, 10001, mIabPurchaseFinishedListener, "mypurchasetoken"); 

    } 

をチェックボックスにチェックマークが付きます。チェックボックスは、クリック数に基づいて変化します。

すべてのヘルプはあなたが行うsharedPreference値の読み取りしようとしている

答えて

0

を理解されるであろう。 settings.getBoolean( "premium_support"、false)を;

sharedpreferenceに値を保存するには、次のようにします。 settings.edit.putBoolean( "premium_support"、false).apply();

希望すると、これが役立ちます。

+0

これで問題は解決されませんでしたが、失敗してもチェックボックスはそのままtrueとマークされます。 –

関連する問題