У меня возникла проблема с интеграцией рекламы Google AdMob в мое приложение. Я использую макет навигационного ящика, который выглядит так:
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment
android:id="@+id/navigation_drawer"
android:name="pl.ntimobile.personalcoach.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start" />
Когда я буду размещать рекламу Google AdMob, ниже фрагмент, вот так:
(...)
android:layout_gravity="start" />
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id" >
</com.google.android.gms.ads.AdView>
And I initiate it properly in my class, it works perfectly, but ads are displayed 1) in the middle of the screen, and 2) above navigation drawer, so when I will show navigation drawer, I cannot click any of it's content. So when I am trying to put both ads and fragment in linear layout, I get ClassCastException... My layout looks like:
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/navigation_drawer"
android:name="pl.ntimobile.personalcoach.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start" />
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id" >
</com.google.android.gms.ads.AdView>
</LinearLayout>
И я получаю в своем логарифме:
10-01 11:13:53.325: E/AndroidRuntime(24113): FATAL EXCEPTION: main
10-01 11:13:53.325: E/AndroidRuntime(24113): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:910)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v4.widget.DrawerLayout.isDrawerOpen(DrawerLayout.java:1156)
10-01 11:13:53.325: E/AndroidRuntime(24113): at pl.company.appname.NavigationDrawerFragment.isDrawerOpen(NavigationDrawerFragment.java:79)
10-01 11:13:53.325: E/AndroidRuntime(24113): at pl.company.appname.FragmentAMain.onCreateOptionsMenu(FragmentAMain.java:135)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.app.Activity.onCreatePanelMenu(Activity.java:2578)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293)
10-01 11:13:53.325: E/AndroidRuntime(24113): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:507)
10-01 11:13:53.325: E/AndroidRuntime(24113): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:934)
10-01 11:13:53.325: E/AndroidRuntime(24113): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:292)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.os.Handler.handleCallback(Handler.java:730)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.os.Handler.dispatchMessage(Handler.java:92)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.os.Looper.loop(Looper.java:176)
10-01 11:13:53.325: E/AndroidRuntime(24113): at android.app.ActivityThread.main(ActivityThread.java:5419)
10-01 11:13:53.325: E/AndroidRuntime(24113): at java.lang.reflect.Method.invokeNative(Native Method)
10-01 11:13:53.325: E/AndroidRuntime(24113): at java.lang.reflect.Method.invoke(Method.java:525)
10-01 11:13:53.325: E/AndroidRuntime(24113): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
10-01 11:13:53.325: E/AndroidRuntime(24113): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
10-01 11:13:53.325: E/AndroidRuntime(24113): at dalvik.system.NativeStart.main(Native Method)