QSFragment: fix NPE in setOverScrollAmount

Sometimes this method can be called before the fragment view has been created.
Adds a null check as a fix.

Test: QSFragmentTest
Fixes: 228991399
Change-Id: I950997fc35230196f855fd54fe23e0fb37ee9b9e
This commit is contained in:
Christian Göllner
2022-04-13 12:20:25 +02:00
parent cd2ba60978
commit aef1de8f85
2 changed files with 22 additions and 1 deletions

View File

@@ -519,7 +519,10 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
@Override
public void setOverScrollAmount(int overScrollAmount) {
mOverScrolling = overScrollAmount != 0;
getView().setTranslationY(overScrollAmount);
View view = getView();
if (view != null) {
view.setTranslationY(overScrollAmount);
}
}
@Override

View File

@@ -315,6 +315,24 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
verify(mQuickQSPanelController).setCollapseExpandAction(action);
}
@Test
public void setOverScrollAmount_setsTranslationOnView() {
QSFragment fragment = resumeAndGetFragment();
fragment.setOverScrollAmount(123);
assertThat(mQsFragmentView.getTranslationY()).isEqualTo(123);
}
@Test
public void setOverScrollAmount_beforeViewCreated_translationIsNotSet() {
QSFragment fragment = getFragment();
fragment.setOverScrollAmount(123);
assertThat(mQsFragmentView.getTranslationY()).isEqualTo(0);
}
@Override
protected Fragment instantiate(Context context, String className, Bundle arguments) {
MockitoAnnotations.initMocks(this);