2

我能够下载并导入适用于 android 的 moPub 库。按照 moPub 网站上的简单示例进行操作后,该应用程序在模拟器中运行良好。但是,添加控件后,eclipse 查看器无法正常显示屏幕。

xml包含[基于示例]

    <com.mopub.mobileads.MoPubView
        android:id="@+id/adview"
        android:layout_width="fill_parent"
        android:layout_height="50px" />

当我尝试转到“图形布局”选项卡时导致以下错误

The following classes could not be instantiated:
- com.mopub.mobileads.MoPubView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.
Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse

虽然这比炫耀更令人讨厌,但这是我宁愿做的事情。非常感谢您提前。

4

1 回答 1

1

为了快速修复自己在 MoPub SDK 项目中编辑 MoPubView(假设您以这种方式添加源代码与项目的其余部分一起编译),如果是这样,则在构造函数中的 super 调用之后添加以下行上下文和属性集参数:

    if (isInEditMode()) return;

这是一个更大的片段,显示了上述行的位置:

public MoPubView(Context context, AttributeSet attrs) {
    super(context, attrs);

    if (isInEditMode()) return;

    mContext = context;
    //[...the rest of the constructor's code...]
}

添加这条线(风格口味)导致异常不会被抛出并在我的设备上运行,并且能够在测试中拉下 320x50 横幅广告(迄今为止,我从未向模拟器提供过广告。)

我在 github 上进行了这个更改并提出了拉取请求。发布:版本 1.14.1.0 https://github.com/mopub/mopub-android-sdk

Android SDK 对整个 isInEditMode() 使用的看法:http: //developer.android.com/reference/android/view/View.html#isInEditMode()

于 2013-07-04T22:49:36.787 回答