我正在使用andengine,我正在两个场景之间切换。我的目的是在转换之间添加插页式广告。到目前为止,这是我的代码:
public void showGameOver(){
mainactivity=new MainActivity();
mainactivity.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
interstitial = new InterstitialAd(mainactivity);
interstitial.setAdUnitId("MY AD UNIT ID");
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
if (interstitial.isLoaded()) {
interstitial.show();
}
}
});
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
}
@Override
public void onAdClosed() {
// Proceed to the next level.
setCurrentScene(gameover);
res.engine.setScene(gameover);
gameover.loadResources();
gameover.create();
}
});
}
以上代码(没有插页式广告代码)切换到我的配对场景。当我添加插页式广告代码时,我的应用会崩溃。插页式广告应该展示广告,当它关闭时,我的游戏场景应该显示。我输入了正确的广告单元ID。
Logcat说:无法在未调用looper.prepare()的线程内创建处理程序。
我搜索了这个,解决方案声明我必须把它放在runonuithread方法上,我做了。 任何帮助将不胜感激。
答案 0 :(得分:0)
您无法通过mainactivity=new MainActivity();
实例化新活动并使用它。相反,你应该将游戏的基础活动传递给你的gameOver()方法并使用它:
public void showGameOver(Activity yourActivity){
yourActivity.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
interstitial = new InterstitialAd(mainactivity);
interstitial.setAdUnitId("MY AD UNIT ID");
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
if (interstitial.isLoaded()) {
interstitial.show();
}
}
});