Android支持库升级后,底部工作表崩溃

4

我们有一个底部弹出框,将支持库版本更新到“26.0.1”后,在打开应用程序并显示底部弹出框之前,应用程序崩溃了。

<android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/vf_ovelay_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="gone" />

        <FrameLayout
            android:id="@+id/bottom_sheet_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingTop="32dp"
            android:clickable="true"
            android:visibility="gone"
            tools:visibility="visible"
            app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
            app:behavior_skipCollapsed="true"/>

</android.support.design.widget.CoordinatorLayout>

并且。
private BottomSheetBehavior mBottomSheetBehavior;
private ViewGroup bottomSheet;

这是我展示它的方式

mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
mBottomSheetBehavior.setHideable(true);//Important to add
        mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
bottomSheet.removeAllViews();
bottomSheet.setVisibility(VISIBLE);
bottomSheet.addView(getCustomView());

当我点击屏幕时,应用程序崩溃了!
日志如下:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.ref.WeakReference.get()' on a null object reference
at android.support.design.widget.BottomSheetBehavior.onInterceptTouchEvent(BottomSheetBehavior.java:299)
at android.support.design.widget.CoordinatorLayout.performIntercept(CoordinatorLayout.java:460)
at android.support.design.widget.CoordinatorLayout.onInterceptTouchEvent(CoordinatorLayout.java:499)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2310)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2371)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2568)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1776)
at android.app.Activity.dispatchTouchEvent(Activity.java:2866)

1
请在此处添加日志 - Samir Bhatt
请查看此链接,它可能会对您有所帮助:https://dev59.com/FlsV5IYBdhLWcg3wsQrf - Samir Bhatt
你找到解决方案了吗?我这里也有同样的问题。 - Roberto
同样如此。如果您更新此线程(这是Google中的第一个),则会很有帮助。 - Renaud Favier
这个问题只能通过创建自定义的BottomSheetBehavior类并更新onInterceptTouchEvent方法来解决。https://developer.android.com/reference/android/support/design/widget/BottomSheetBehavior - Mostafa El-Abady
1个回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接