我在 MainActivity.java
中有一个 StartApp 广告,在另一个 Activity 中有一个 Donate 选项。我想在用户从另一个 Activity (名为:About
)捐款后,将广告隐藏在 MainActivity
中。我使用 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();
}
}
};
...
最佳答案
一旦用户捐赠,您就将 don_ban
设置为 true。如果 don_ban
为真,则隐藏横幅。问题是,当您从 SharedPreferences 获取 don_ban
时,您的默认设置为真。 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,以便它默认显示广告,而不是隐藏它。
关于java - 在用户捐款/未捐款后隐藏/显示 SrartApp 广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427971/