0

将 admob 添加到我的 xml 时会导致致命错误,从而导致应用程序崩溃。

我在 /libs 中正确添加了 admob jar 并构建路径。

xml 看起来像这样

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="right" >

    <com.google.ads.AdView 
                        xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
                         android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         ads:adUnitId="#######"
                         ads:adSize="BANNER"
                         ads:testDevices="######"
                         ads:loadAdOnCreate="true"/> </RelativeLayout>

这是logcat

07-29 00:39:59.113:E/Ads(8849):无法初始化 AdView:AdView 已使用不是 Activity 的上下文进行初始化。07-29 00:39:59.113:E/Ads(8849):无法初始化 AdView:AdView 已使用不是 Activity 的上下文进行初始化。07-29 00:39:59.113: W/dalvikvm(8849): threadid=1: 线程退出未捕获异常 (group=0x40da9390) 07-29 00:39:59.133: E/AndroidRuntime(8849): 致命异常: main 07-29 00:39:59.133:E/AndroidRuntime(8849):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.clickvote.app/com.clickvote.app.WebViewActivity}:android.view.InflateException:二进制XML 文件第 7 行:膨胀类 com.google.ads.AdView 07-29 00:39:59.133 时出错:E/AndroidRuntime(8849):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355) 07-29 00: performLaunchActivity(ActivityThread.java:2311) 07-29 00:39:59.133: E/AndroidRuntime(8849): ... 11 更多 07-29 00:39:59.133: E/AndroidRuntime(8849): 引起:java。 lang.reflect.InvocationTargetException 07-29 00:39:59.133: E/AndroidRuntime(8849): at java.lang.reflect.Constructor.constructNative(Native Method) 07-29 00:39:59.133: E/AndroidRuntime(8849) : 在 java.lang.reflect.Constructor.newInstance(Constructor.java:417) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.view.LayoutInflater.createView(LayoutInflater.java:587) 07 -29 00:39:59.133: E/AndroidRuntime(8849): ... 20 更多 07-29 00:39:59.133: E/AndroidRuntime(8849): 由: java.lang.RuntimeException: 无法初始化 AdView: AdView 是使用不是 Activity 的 Context 初始化的。07-29 00:39:59.133: E/AndroidRuntime(8849): 在 com.google.ads.AdView.a(SourceFile:402) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 com.google.ads.AdView.(SourceFile:125) 07-29 00: 39:59.133: E/AndroidRuntime(8849): ... 23 更多 07-29 00:39:59.133: E/AndroidRuntime(8849): 由: com.google.ads.internal.b: AdView 初始化为不是 Activity 的上下文。07-29 00:39:59.133: E/AndroidRuntime(8849): at com.google.ads.AdView.a(SourceFile:389) 07-29 00:39:59.133: E/AndroidRuntime(8849): ...还有 24 个

4

2 回答 2

1

好的,根据您的评论,我将发布较早的建议作为带有一些示例代码的答案,因为正如您所指出的,您对 Android 还是很陌生。

您当前的代码:

public class WebViewActivity extends DroidGap {
    public static String LOG_TAG = "name";
    private Dialog mLoadingDialog;

    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActionBar().setCustomView(R.layout.ab); // <-- !!
        getActionBar().setDisplayShowCustomEnabled(true);
        getActionBar().setDisplayShowHomeEnabled(false);
    }
}

基本上你应该尝试重写上面指出的行。与其将自定义视图膨胀委托给 ,不如ActionBar自己膨胀它以确保使用Activity上下文。像这样:

public class WebViewActivity extends DroidGap {
    public static String LOG_TAG = "name";
    private Dialog mLoadingDialog;

    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View customActionBarView = getLayoutInflater().inflate(R.layout.ab, null, false);
        getActionBar().setCustomView(customActionBarView);
        getActionBar().setDisplayShowCustomEnabled(true);
        getActionBar().setDisplayShowHomeEnabled(false);
    }
}

那应该(可能)摆脱您当前看到的异常。我没有验证或尝试运行上面的代码段,所以请注意任何拼写错误。如果您在此之后仍然遇到同样的问题,请轻推我,我会仔细查看。

于 2013-07-29T08:56:11.297 回答
0

尝试阅读您的错误:

 AdView was initialized with a Context that wasn't an Activity
于 2013-07-29T00:16:47.730 回答