mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-04 18:06:48 +00:00
Catch NPE for AllAppsContainerView.dispatchRestoreInstanceState
TL;DR;; Missing view id for work profile recycler view caused restore failure as there are different type of views that contains same id. However, even after that fix, lack of view id in slice views generated by other process causes failure when mFlags on these not restored slice views needs to be accessed. Bug: 186596139 Test: manual Change-Id: I8a97598c27acbc05ac8a39c50fe5862e541d62ad
This commit is contained in:
@@ -30,11 +30,13 @@ import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Parcelable;
|
||||
import android.os.Process;
|
||||
import android.text.Selection;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
@@ -133,6 +135,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
|
||||
private int mHeaderColor;
|
||||
|
||||
|
||||
|
||||
public AllAppsContainerView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -171,6 +174,19 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
|
||||
mAllAppsStore.addUpdateListener(this::onAppsUpdated);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatchRestoreInstanceState(SparseArray<Parcelable> sparseArray) {
|
||||
try {
|
||||
// Many slice view id is not properly assigned, and hence throws null
|
||||
// pointer exception in the underneath method. Catching the exception
|
||||
// simply doesn't restore these slice views. This doesn't have any
|
||||
// user visible effect because because we query them again.
|
||||
super.dispatchRestoreInstanceState(sparseArray);
|
||||
} catch (Exception e) {
|
||||
Log.e("AllAppsContainerView", "restoreInstanceState viewId = 0", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the long click listener for icons
|
||||
*/
|
||||
@@ -438,6 +454,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
|
||||
setupWorkToggle();
|
||||
mAH[AdapterHolder.MAIN].setup(mViewPager.getChildAt(0), mPersonalMatcher);
|
||||
mAH[AdapterHolder.WORK].setup(mViewPager.getChildAt(1), mWorkMatcher);
|
||||
mAH[AdapterHolder.WORK].recyclerView.setId(R.id.apps_list_view_work);
|
||||
mViewPager.getPageIndicator().setActiveMarker(AdapterHolder.MAIN);
|
||||
findViewById(R.id.tab_personal)
|
||||
.setOnClickListener((View view) -> {
|
||||
|
||||
Reference in New Issue
Block a user