2016-07-18 6 views
1

を寄付しませんでした。ユーザーが別のアクティビティ(名前:About)から寄付をした後、MainActivityの広告を非表示にしたい私はSharedPreferencesを使って、ユーザーが寄付するかどうかを指定しました。しかし、私は広告に問題がある、それはユーザーが支払っていない場合でも表示されません!表示/非表示SrartApp広告寄付を作る/私は<code>MainActivity.java</code>で<strong>startappの</strong>広告を持っている、と<strong>は別のアクティビティに</strong>オプションを寄付

*ヒント:以下のコードを追加する前に広告に問題はありません。

以下のコードは、私は SharedPreferenceshideBanner();方法等を用いる方法を説明

....

MainActivity.java:

... 
protected SharedPreferences prefs; 
    protected static final String PREFS_KEY = "donation"; 
    private Banner banner; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     StartAppSDK.init(this, "...", false); 
     setContentView(R.layout.activity_main); 

     prefs = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE); 

     if(prefs.getBoolean("don_ban", true)) 
     { 
      banner = (Banner) findViewById(R.id.startAppBanner); 
      if(banner != null) 
      { 
       banner.hideBanner(); 
      } 
     } 
     else 
     { 
      if(banner != null) 
      { 
       banner.showBanner(); 
      } 
     } 

... 

About.java:

... 
protected SharedPreferences prefs; 
protected SharedPreferences.Editor editor; 

... 

private IabHelper.OnConsumeFinishedListener consumeFinishedListener = new IabHelper.OnConsumeFinishedListener() { 
     @Override 
     public void onConsumeFinished(Purchase purchase, IabResult result) { 

      if(result.isSuccess()) 
      { 
       prefs = getSharedPreferences(MainActivity.PREFS_KEY, Context.MODE_PRIVATE); 
       editor = prefs.edit(); 
       editor.putBoolean("don_ban", true); 
       editor.commit(); 
      } 
      else 
      { 
       Snackbar.make(findViewById(R.id.coordinatorlayout_about), R.string.unknown_error, Snackbar.LENGTH_SHORT).show(); 
      } 
     } 
    }; 
... 

答えて

2

ユーザーが寄付すると、あなたは設定されますdon_banをtrueに設定してください。 don_banがtrueの場合、バナーを非表示にします。問題は、SharedPreferencesからdon_banを取得すると、デフォルトがtrueになります。ユーザーが寄付する前にdon_banが作成されていないため、デフォルト値のtrueが返され、バナーが非表示になります。

これにコードを変更し

、それが動作します:私は

... 
protected SharedPreferences prefs; 
    protected static final String PREFS_KEY = "donation"; 
    private Banner banner; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     StartAppSDK.init(this, "...", false); 
     setContentView(R.layout.activity_main); 

     prefs = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE); 

     if(prefs.getBoolean("don_ban", false)) //Changed default to false 
     { 
      banner = (Banner) findViewById(R.id.startAppBanner); 
      if(banner != null) 
      { 
       banner.hideBanner(); 
      } 
     } 
     else 
     { 
      if(banner != null) 
      { 
       banner.showBanner(); 
      } 
     } 

... 

すべてはそれがデフォルトで広告を示して代わりにそれを隠す、falseにあなたのif文のprefs.getBoolean()デフォルトを変更しました。

+0

ありがとうございます!実際には私は6時間かけてエラーを見つけようとしました!あなたのソリューションを投稿する前に、私は 'SharedPreferences'の' boolean'のデフォルト値が 'true'であるのを知らなかったのです!私はそれが「偽」だと思っていた!だから、あなたの答えをどうもありがとう。 – Androider

+0

問題ありません!あなたがこれ以上の問題を抱えているなら、私にメッセージをすれば、私は助けてくれるでしょう! – TheAnonymous010

関連する問題