クリックしたタスクを実行する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値の読み取りしようとしている
これで問題は解決されませんでしたが、失敗してもチェックボックスはそのままtrueとマークされます。 –