我在MainActivity.java
中有 StartApp 广告,在另一项活动中有捐赠选项。我想在用户从另一项活动(名称为MainActivity
)捐款后隐藏About
广告。我使用SharedPreferences
来指定用户是否捐赠。但我对广告有疑问,即使用户没有付款也不会出现!
*提示: 在添加以下代码之前,广告没有问题。
以下代码说明了我如何使用SharedPreferences
,hideBanner();
方法等等。
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();
}
}
};
...
答案 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,这样它默认显示广告,而不是隐藏它。