Fix null pointer exception when updating action bar shadow.
Check for valid activity when trying to access the action bar as the activity can become null when in monkey test. Change-Id: I684d873b9eabb9d8461e99bb4385d411a48c0c52 Fix: 64084651 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -121,7 +121,7 @@ public class ActionBarShadowController implements LifecycleObserver, OnStart, On
|
|||||||
final boolean shouldShowShadow = view.canScrollVertically(-1);
|
final boolean shouldShowShadow = view.canScrollVertically(-1);
|
||||||
if (mAnchorView != null) {
|
if (mAnchorView != null) {
|
||||||
mAnchorView.setElevation(shouldShowShadow ? ELEVATION_HIGH : ELEVATION_LOW);
|
mAnchorView.setElevation(shouldShowShadow ? ELEVATION_HIGH : ELEVATION_LOW);
|
||||||
} else {
|
} else if (mActivity != null) { // activity can become null when running monkey
|
||||||
final ActionBar actionBar = mActivity.getActionBar();
|
final ActionBar actionBar = mActivity.getActionBar();
|
||||||
if (actionBar != null) {
|
if (actionBar != null) {
|
||||||
actionBar.setElevation(shouldShowShadow ? ELEVATION_HIGH : ELEVATION_LOW);
|
actionBar.setElevation(shouldShowShadow ? ELEVATION_HIGH : ELEVATION_LOW);
|
||||||
|
@@ -104,4 +104,15 @@ public class ActionBarShadowControllerTest {
|
|||||||
verify(mRecyclerView, times(2)).addOnScrollListener(any());
|
verify(mRecyclerView, times(2)).addOnScrollListener(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onScrolled_nullAnchorViewAndActivity_shouldNotCrash() {
|
||||||
|
final Activity activity = null;
|
||||||
|
final ActionBarShadowController controller =
|
||||||
|
ActionBarShadowController.attachToRecyclerView(activity, mLifecycle, mRecyclerView);
|
||||||
|
|
||||||
|
// Scroll
|
||||||
|
controller.mScrollChangeWatcher.onScrolled(mRecyclerView, 10 /* dx */, 10 /* dy */);
|
||||||
|
// no crash
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user