Assigned
Status Update
Comments
il...@google.com <il...@google.com>
ch...@google.com <ch...@google.com> #2
class FixDrawerLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
) : DrawerLayout(context, attrs) {
fun registerToFragmentLifecycle(fragment: Fragment) {
fragment.viewLifecycleOwner.launchOnLifecycleDestroy {
super.onDetachedFromWindow()
}
}
}
Description
Version used: 1.2.0
Devices/Android versions reproduced on:
Android 9 - 13
This is a reported issue to our Android line's internal bug tracking system.
There are about 20 to 30 cases a day, so it's not big, but it's been reported steadily, so action is needed.
We couldn't reproduce it separately.
StackTrace
```
java.lang.NullPointerException: Parameter specified as non-null is null: method com.linecorp.line.a$a.b, parameter panel
at com.linecorp.line.a$1.b(SettingsTwoPaneLayout.kt:2)
at androidx.slidingpanelayout.widget.SlidingPaneLayout.dispatchOnPanelOpened(SlidingPaneLayout.java:470)
at androidx.slidingpanelayout.widget.SlidingPaneLayout$DragHelperCallback.onViewDragStateChanged(SlidingPaneLayout.java:1535)
at androidx.customview.widget.ViewDragHelper.setDragState(ViewDragHelper.java:920)
at androidx.customview.widget.ViewDragHelper.abort(ViewDragHelper.java:563)
at androidx.slidingpanelayout.widget.SlidingPaneLayout.onMeasure(SlidingPaneLayout.java:791)
at android.view.View.measure(View.java:25804)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:811)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:466)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:134)
at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:278)
at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:120)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1594)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1708)
at android.view.View.measure(View.java:25804)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145)
at android.view.View.measure(View.java:25804)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6980)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1558)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25804)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25804)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6980)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1558)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25804)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6980)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:772)
at android.view.View.measure(View.java:25804)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3630)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2429)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2699)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2148)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8823)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1120)
at android.view.Choreographer.doCallbacks(Choreographer.java:926)
at android.view.Choreographer.doFrame(Choreographer.java:859)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1105)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:8064)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
```
The cause of the problem is that param is NonNull in the api below, but it is set to Null in SlidingPaneLayout.
```
PanelSlideListener.onPanelOpened(@NonNull View panel)
```
Looking at the code of SlidingPaneLayout, I think it's a timing issue because the view is assigned as null in onMeasure.
Please check the issue!