Android FragmentManager BackStackRecord.run throwing NullPointerException

在使用DialogFragment的时候,有时候总是报出

Android FragmentManager BackStackRecord.run throwing NullPointerException

这个错误,然后自己去找这个问题。但是很多情况并非是FragmentManager的错误,而是有里面的View引起的。


比如在DialogFragment中使用WheelView的时候,出现过问题。

https://github.com/wangjiegulu/WheelView


想要实现如下效果:

Android FragmentManager BackStackRecord.run throwing NullPointerException_第1张图片



开始的时候设置这个布局如下,一直出现问题:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView

            android:id="@+id/close"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginLeft="20dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="关闭"
            android:textColor="@color/black"
            android:textSize="18sp" />

        <View
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1"></View>

        <TextView
            android:id="@+id/sure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="20dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="确认"
            android:textColor="@color/black"
            android:textSize="18sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <com.robot.tongbanjie.widget.WheelView
            android:id="@+id/wheel_view_main"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

        <com.robot.tongbanjie.widget.WheelView
            android:id="@+id/wheel_view_decimal"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" />

    </LinearLayout>


</LinearLayout>



解决方法,固定WheelView的宽度:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView

            android:id="@+id/close"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginLeft="20dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="关闭"
            android:textColor="@color/black"
            android:textSize="18sp" />

        <View
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1"></View>

        <TextView
            android:id="@+id/sure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginRight="20dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="确认"
            android:textColor="@color/black"
            android:textSize="18sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <View
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1" />

        <com.robot.tongbanjie.widget.WheelView
            android:id="@+id/wheel_view_main"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp" />

        <com.robot.tongbanjie.widget.WheelView
            android:id="@+id/wheel_view_decimal"
            android:layout_width="140dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp" />

        <View
            android:layout_width="0dp"
            android:layout_height="1dp"
            android:layout_weight="1" />

    </LinearLayout>


</LinearLayout>


总结:

(1)报出Android FragmentManager BackStackRecord.run throwing NullPointerException错误,是由于里面的WheelView引起的。

(2)WheelView有时候需要设置固定的宽度,才可以。


你可能感兴趣的:(Android FragmentManager BackStackRecord.run throwing NullPointerException)