这是我的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<com.mopub.mobileads.MoPubView
android:id="@+id/adview"
android:layout_width="fill_parent"
android:layout_height="50dp"
/>
</RelativeLayout>
我正在将MoPub SDK集成到我的libGDX游戏中,在MoPub文档中他们说要在layout.xml中创建MopubView,如上所示。然后,执行以下操作:
moPubView = (MoPubView) findViewById(R.id.adview);
moPubView.setAdUnitId("xxxxxxxxxxx"); // Enter your Ad Unit ID from www.mopub.com
moPubView.loadAd();
RelativeLayout layout = new RelativeLayout(this);
// Create the libgdx View
View gameView = initializeForView(new TBGame(this), config);
// Add the libgdx view
layout.addView(gameView);
layout.addView(moPubView)
setContentView(layout);
但是libGDX不会加载我的xml文件,因为它不需要它,每当执行到达上面的行时就会导致空指针异常。所以解决方案似乎是从代码创建视图?我怎样才能做到这一点?这里有一个非常相似的问题Integrating Mopub ads into Cocos2dx 2.1但是解决方案声明对最新的MoPub SDK无效。
编辑:这是MoPubView类https://github.com/mopub/mopub-android-sdk/blob/master/mopub-sdk/src/main/java/com/mopub/mobileads/MoPubView.java
附件:此处附带的部分堆栈跟踪:
答案 0 :(得分:0)
如果你对findViewById的调用是在一个活动中,你需要在onCreate中使用布局调用setContentView: 的setContentView(R.layout.layout); (顺便说一句,尝试一个更具描述性的名称)
否则 - 动态加载:How to load layout in code from xml file并根据需要使用生成的视图,可能是view.findViewById
答案 1 :(得分:0)
你需要做这样的事情:
setContentView(relativeLayout);
RelativeLayout relativeLayout = new RelativeLayout(this);
relativeLayout.addView(yourchildView);