如何通过代码在Android中创建视图并设置属性?

时间:2014-12-10 11:50:02

标签: android libgdx mopub

这是我的布局

<?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

附件:此处附带的部分堆栈跟踪: Stacktrace

2 个答案:

答案 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);