在用户捐赠/没有捐赠后隐藏/显示SrartApp广告

时间:2016-07-18 02:54:50

标签: java android

我在MainActivity.java中有 StartApp 广告,在另一项活动中有捐赠选项。我想在用户从另一项活动(名称为MainActivity)捐款后隐藏About广告。我使用SharedPreferences来指定用户是否捐赠。但我对广告有疑问,即使用户没有付款也不会出现!

*提示: 在添加以下代码之前,广告没有问题。

以下代码说明了我如何使用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();
            }
        }
    };
...

1 个答案:

答案 0 :(得分:2)

用户捐赠后,您将don_ban设置为true。如果don_ban为真,则隐藏横幅。问题是,当您从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();
            }
        }

...

我所做的就是将你的if语句的prefs.getBoolean()默认更改为false,这样它默认显示广告,而不是隐藏它。