我使用libGDX开发了一个Android应用,并向其中添加了Admob,但是当我在Android上打开APK时,它崩溃了,表明该过程已停止。
这是我在Android项目中的代码。
public class MainActivity extends AndroidApplication{
protected AdView adview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.useGL20 = true;
final TelephonyManager tm =(TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = tm.getDeviceId();
RelativeLayout layout = new RelativeLayout(this);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
setContentView(graphics.getView(), createLayoutParams());
View gameview = initializeForView(new BalloonBreakout(), false);
adview = new AdView(this);
adview.setAdSize(AdSize.BANNER);
adview.setAdUnitId("ca-app-pub-6258330641042393/6188790266");
adview.loadAd(new AdRequest.Builder().addTestDevice(deviceid).build());
RelativeLayout.LayoutParams adparams = new RelativeLayout.LayoutParams(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 14);
adparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
adparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layout.addView(gameview);
layout.addView(adview, adparams);
setContentView(layout);
}
}
我不确定为什么会崩溃,任何帮助将不胜感激。
更新:
我在这里有错误日志,但是我不知道为什么我得到了空指针。
E( 3875) Caused by: java.lang.NullPointerException (AndroidRuntime)
E( 3875) at com.sevenbit.Balloon_Breakout.MainActivity.onCreate(MainActivity.java:37)(AndroidRuntime)
第37行是:
setContentView(graphics.getView(), createLayoutParams());
但是,当我删除此行时,在同一位置,第37行仍然有一个空指针。
有任何想法吗?
最佳答案
您的问题(就像我最近看到的所有其他libgdx帖子一样)是libgdx AndroidApplication#initializeForView调用Activity#setContextView来设置自己的布局(不应该这样做)。然后,使用自己的布局调用setContextView。
它可能崩溃是因为某些libgdx代码假定它的布局对象已被加载,但是它不存在,因为您已用自己的替换了它。
关于android - 使用AdMob打开Android应用时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699242/