Android LayoutParams的强制转换异常
我有一个活动,其中有一个片段(GFFragmentMo类),它扩展了ListFragment(support.v4)。Android LayoutParams的强制转换异常,android,Android,我有一个活动,其中有一个片段(GFFragmentMo类),它扩展了ListFragment(support.v4)。 自从我添加了这个片段,每次看到这个片段时,我都会得到一个异常,我会拉下android抽屉,然后再把它拉回来 片段的根布局是LinearLayout,我没有设置任何视图的布局参数。 我在安卓6.0上运行,但它也在4.4.2上被复制 例外情况如下: java.lang.ClassCastException: android.widget.LinearLayout$LayoutPar
自从我添加了这个片段,每次看到这个片段时,我都会得到一个异常,我会拉下android抽屉,然后再把它拉回来 片段的根布局是LinearLayout,我没有设置任何视图的布局参数。 我在安卓6.0上运行,但它也在4.4.2上被复制 例外情况如下:
java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.view.WindowManager$LayoutParams
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4221)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7229)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
这是我用来放置此片段的代码:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_holder, new GFragmentMo(), null).addToBackStack(null).commit();
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
...
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_marginTop="?android:attr/actionBarSize"
android:id="@+id/cContainer">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragmentA"
android:visibility="gone"
class="com.google.android.gms.cast.framework.media.widget.MiniControllerFragment" />
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_holder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
这是包含片段的活动的布局:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_holder, new GFragmentMo(), null).addToBackStack(null).commit();
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
...
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_marginTop="?android:attr/actionBarSize"
android:id="@+id/cContainer">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragmentA"
android:visibility="gone"
class="com.google.android.gms.cast.framework.media.widget.MiniControllerFragment" />
</FrameLayout>
<FrameLayout
android:id="@+id/fragment_holder"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
...
我想在这里谈谈任何有助于解决这个问题的想法
感谢好吧,问题是在该片段中的自定义视图中,我错误地调用了
getRootView().setLayoutParams(…)
,这更改了我无意更改的布局参数。好吧,问题是在该片段中的自定义视图中,我错误地调用了getRootView().setLayoutParams(…)
这改变了我不想改变的布局参数。你看到了吗?这可能会有帮助。我还没有更改片段的布局参数。但是谢谢!我建议将根LinearLayout更改为其他内容,以查看错误是否仍然存在,或者是否发生了更改。例外情况是,android expect WindowManager的LayoutParams,您知道如何提供它吗?使用哪种布局?我再试试另一个,只是为了试试…@Vucko没用,谢谢你,你看到了吗?这可能会有帮助。我还没有更改片段的布局参数。但是谢谢!我建议将根LinearLayout更改为其他内容,以查看错误是否仍然存在,或者是否发生了更改。例外情况是,android expect WindowManager的LayoutParams,您知道如何提供它吗?使用哪种布局?我再试试另一个,只是为了试试…@Vucko没用,谢谢你