2013-07-29 2 views
0

admob을 내 xml에 추가하면 치명적인 오류가 발생하여 응용 프로그램이 중단됩니다.Admob 6.4.1 - com.google.ads.AdView 클래스를 확장하는 중 오류가 발생했습니다.

/libs에 admob jar를 올바르게 추가하고 경로를 작성했습니다. 다음은이

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

07-29 00:39:59.113: E/Ads(8849): Could not initialize AdView: AdView was initialized with a Context that wasn't an Activity. 07-29 00:39:59.113: E/Ads(8849): Could not initialize AdView: AdView was initialized with a Context that wasn't an Activity. 07-29 00:39:59.113: W/dalvikvm(8849): threadid=1: thread exiting with uncaught exception (group=0x40da9390) 07-29 00:39:59.133: E/AndroidRuntime(8849): FATAL EXCEPTION: main 07-29 00:39:59.133: E/AndroidRuntime(8849): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.clickvote.app/com.clickvote.app.WebViewActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class com.google.ads.AdView 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.ActivityThread.access$600(ActivityThread.java:151) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.os.Handler.dispatchMessage(Handler.java:99) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.os.Looper.loop(Looper.java:155) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.ActivityThread.main(ActivityThread.java:5511) 07-29 00:39:59.133: E/AndroidRuntime(8849): at java.lang.reflect.Method.invokeNative(Native Method) 07-29 00:39:59.133: E/AndroidRuntime(8849): at java.lang.reflect.Method.invoke(Method.java:511) 07-29 00:39:59.133: E/AndroidRuntime(8849): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029) 07-29 00:39:59.133: E/AndroidRuntime(8849): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796) 07-29 00:39:59.133: E/AndroidRuntime(8849): at dalvik.system.NativeStart.main(Native Method) 07-29 00:39:59.133: E/AndroidRuntime(8849): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class com.google.ads.AdView 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 07-29 00:39:59.133: E/AndroidRuntime(8849): at com.android.internal.app.ActionBarImpl.setCustomView(ActionBarImpl.java:310) 07-29 00:39:59.133: E/AndroidRuntime(8849): at com.clickvote.app.WebViewActivity.onCreate(WebViewActivity.java:45) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.Activity.performCreate(Activity.java:5066) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311) 07-29 00:39:59.133: E/AndroidRuntime(8849): ... 11 more 07-29 00:39:59.133: E/AndroidRuntime(8849): Caused by: 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): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 07-29 00:39:59.133: E/AndroidRuntime(8849): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 07-29 00:39:59.133: E/AndroidRuntime(8849): ... 20 more 07-29 00:39:59.133: E/AndroidRuntime(8849): Caused by: java.lang.RuntimeException: Could not initialize AdView: AdView was initialized with a Context that wasn't an Activity. 07-29 00:39:59.133: E/AndroidRuntime(8849): at com.google.ads.AdView.a(SourceFile:402) 07-29 00:39:59.133: E/AndroidRuntime(8849): at com.google.ads.AdView.(SourceFile:125) 07-29 00:39:59.133: E/AndroidRuntime(8849): ... 23 more 07-29 00:39:59.133: E/AndroidRuntime(8849): Caused by: com.google.ads.internal.b: AdView was initialized with a Context that wasn't an 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 more

+0

스택 트레이스는 'ActionBarImpl.setCustomView (...)'를 기반으로 'ActionBar'에 대한 맞춤보기로 'AdView'를 설정하려고한다는 것을 암시합니다 - 그렇다면 그렇습니까? ActionBar가 내부적으로 뷰를 부 풀리기 위해 사용하는 '테마 컨텍스트'는 반드시 '액티비티'일 필요는 없습니다. 액티비티에서 뷰를 팽창시키고'setCustomView (뷰 뷰) '를 호출 할 수 있습니다 ('setCustomView (int resId)', 아마도 지금 사용하고있는 것입니다.) –

+0

감사합니다. 레이아웃 xml에서 코드를 실행하기 때문에 내 활동에 admob 코드를 넣지 않았습니다. 이것은 내 활동이 시작됩니다. 공용 클래스 WebViewActivity는 DroidGap을 확장합니다. { \t public static String LOG_TAG = "name"; \t 대화 상자 mLoadingDialog; \t @Override \t 공개 무효에서 onCreate (번들 savedInstanceState) { \t \t super.onCreate (savedInstanceState); \t \t getActionBar(). setCustomView (R.layout.ab); \t \t getActionBar(). setDisplayShowCustomEnabled (true); \t \t getActionBar(). setDisplayShowHomeEnabled (false); ' –

답변

0

이 오류를 읽어보십시오 로그 캣이 같은

는 XML 보인다 :

AdView was initialized with a Context that wasn't an Activity 
+0

그랬습니다. 이것에 대한 도움이 필요하십니까? 이 일을 할 때 정말 새로운 내용이 있습니다. –

+0

이것은 답변으로 간주됩니다. 이는 AdView에 전달중인 컨텍스트가 활동에서 나오지 않았 음을 의미하기 때문입니다. 어떤 점에서 저작자가 활동에서 나오는지 확인하기 위해 코드를 다시 작성해야한다는 것을 의미합니다. – JoxTraex

1

좋아, 당신의 의견에 따라 내가 게시거야 앞선 제안은 몇 가지 샘플 코드에 대한 답변으로, 당신이 지적했듯이, 당신은 안드로이드에 대해 아주 새롭다.

현재 코드 :

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); 
    } 
} 

현재보고있는 예외를 제거해야합니다 (아마). 위의 스 니펫을 확인하거나 실행하지 않으므로 오타가 있음을 알고 있어야합니다. 이 후에도 여전히 같은 문제가 발생하는 경우 나에게 뉘앙스를 주면 더 잘 보일 것입니다.

+0

도움에 감사드립니다.내가 제공 한 코드를 시도했지만 여전히 동일한 문제가 있습니다. 나를 혼란스럽게하는 것은 admob이 xml을 통해 decleared되고 기본적으로 admob에 대한 활동에 코드가 사용되지 않는다는 것입니다. –

+0

그리고'setCustomView (R.layout.ab)'라는 호출을 삭제 했습니까? 아마도 관련 코드 중 일부를 사용하여 질문을 제기 할 가치가있을 것입니다. 혼란에 대해서 :'AdView'는 다소 독립적 인 구성 요소입니다. 개발자로서 기본적으로 코드를 작성할 필요가 없습니다. –

+0

예 .setCustomView (customActionBarView);를 설정합니다. 대신에 그리고 같은 문제. 정보를 주셔서 감사합니다, 왜 내가 생각하고 혼란스러워 간단한 XML 통합 오류가 발생합니다. –

관련 문제