gpt4 book ai didi

android - 更改 fragment onAdclose。插页式广告

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:03 32 4
gpt4 key购买 nike

我想在广告关闭后更改 fragment 。

但是它抛出一个 IllegalStateException

fragment 1:

...
mInterstitialAd = new InterstitialAd(this.getContext());
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");

mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
masterActivity.showGame(); // <---- here comes the error
}
});
requestNewInterstitial();

// Action Listener on Button show game
Button btnShowGame = (Button) view.findViewById(R.id.btnShowGame);
btnShowGame.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
masterActivity.showGame();
}
return true;
}
});

MasterActivity:

...
public void showGame() {
FragmentGameBoard fragment = new FragmentGameBoard();
fragment.setMasterActivity(this);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.contentFragment, fragment);
transaction.commit();
}

结果是:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

从这篇文章看来,错误似乎是正常的: http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html

--> “避免在异步回调方法中执行事务。”

但是如何实现我想做的事情呢?

这显然与广告和异步逻辑有关。

我不希望用户必须再次单击按钮才能切换 fragment 。

实际

fragment1 -(clickButton)-> interstitialAd -(closeAd)-> fragment1 -(clickButton)-> fragment2

预计

fragment1 -(clickButton)-> interstitialAd -(closeAd)-> fragment2

感谢您的帮助!

最佳答案

我遇到了同样的问题,并设法解决了如下问题

在 showGame() 内部更改以下行

代替:

transaction.commit();

使用:

transaction.commitAllowingStateLoss();

关于android - 更改 fragment onAdclose。插页式广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711577/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com