【发布时间】:2013-07-28 16:06:58
【问题描述】:
将 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 的 Context 进行初始化。 07-29 00:39:59.113:E/Ads(8849):无法初始化 AdView:AdView 是 使用不是 Activity 的 Context 进行初始化。 07-29 00:39:59.113: W/dalvikvm(8849): threadid=1: 线程退出 未捕获的异常(组=0x40da9390)07-29 00:39:59.133: E/AndroidRuntime(8849): 致命异常: main 07-29 00:39:59.133: E/AndroidRuntime(8849): java.lang.RuntimeException: 无法启动 活动 组件信息{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:39:59.133: E/AndroidRuntime(8849): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.app.ActivityThread.access$600(ActivityThread.java:151) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.os.Handler.dispatchMessage(Handler.java:99) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.os.Looper.loop(Looper.java:155) 07-29 00:39:59.133: E/AndroidRuntime(8849):在 android.app.ActivityThread.main(ActivityThread.java:5511) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 java.lang.reflect.Method.invokeNative(Native Method) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 java.lang.reflect.Method.invoke(Method.java:511) 07-29 00:39:59.133: E/AndroidRuntime(8849):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 dalvik.system.NativeStart.main(本机方法)07-29 00:39:59.133: E/AndroidRuntime(8849):引起:android.view.InflateException: 二进制 XML 文件第 7 行:膨胀类 com.google.ads.AdView 时出错 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.view.LayoutInflater.createView(LayoutInflater.java:613) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.view.LayoutInflater.inflate(LayoutInflater.java:489) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.view.LayoutInflater.inflate(LayoutInflater.java:396) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 com.android.internal.app.ActionBarImpl.setCustomView(ActionBarImpl.java:310) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 com.clickvote.app.WebViewActivity.onCreate(WebViewActivity.java:45) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.app.Activity.performCreate(Activity.java:5066) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 android.app.ActivityThread.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):在 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 已使用 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 的 Context 进行初始化。 07-29 00:39:59.133: E/AndroidRuntime(8849): 在 com.google.ads.AdView.a(SourceFile:389) 07-29 00:39:59.133: E/AndroidRuntime(8849): ... 24 更多
【问题讨论】:
-
堆栈跟踪表明您正在尝试将
AdView设置为ActionBar的自定义视图(基于ActionBarImpl.setCustomView(...)- 是这样吗?如果是这样,我想' ActionBar 内部用于膨胀视图的主题上下文'不一定是Activity。您可以尝试自己在Activity中膨胀视图并调用setCustomView(View view)(而不是setCustomView(int resId),这就是您的意思)可能现在正在使用)。 -
感谢您的评论。我没有在我的活动中添加任何 admob 代码,因为我从布局 xml 运行代码。这就是我的活动开始的方式` public class WebViewActivity extends DroidGap { public static String LOG_TAG = "name";私人对话框 mLoadingDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setCustomView(R.layout.ab); getActionBar().setDisplayShowCustomEnabled(true); getActionBar().setDisplayShowHomeEnabled(false);`
标签: java android eclipse sdk admob