Skip to content
This repository was archived by the owner on Apr 9, 2021. It is now read-only.

Commit dd8b51f

Browse files
committed
Fixes On screen rotation selected forms get unselected bug
Using onSaveInstanceState() and restoring in the onCreateView() Removing ViewModel Fixes On screen rotation selected forms get unselected bug Using onSaveInstanceState() and restoring in the onCreateView()
1 parent 4dcde7d commit dd8b51f

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

skunkworks_crow/src/main/java/org/odk/share/fragments/BlankFormsFragment.java

+18
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public class BlankFormsFragment extends FormListFragment implements LoaderManage
5656
private static final String FORM_CHOOSER_LIST_SORTING_ORDER = "formChooserListSortingOrder";
5757

5858
public static final String FORM_IDS = "form_ids";
59+
private final String SELECTED_INSTANCES_KEY="ROTATION_SELECTED_INSTANCES";
5960

6061
private static final int FORM_LOADER = 2;
6162
private FormsAdapter formAdapter;
@@ -77,6 +78,16 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
7778
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
7879
llm.setOrientation(LinearLayoutManager.VERTICAL);
7980
recyclerView.setLayoutManager(llm);
81+
82+
if(savedInstanceState!=null)
83+
{
84+
long[] previousSelectedInstances=savedInstanceState.getLongArray(SELECTED_INSTANCES_KEY);
85+
for(int i=0;i<previousSelectedInstances.length;i++)
86+
{
87+
selectedForms.add(previousSelectedInstances[i]);
88+
}
89+
}
90+
8091
return view;
8192
}
8293

@@ -92,6 +103,13 @@ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
92103
return new FormsDao().getFormsCursorLoader(getFilterText(), getSortingOrder());
93104
}
94105

106+
@Override public void onSaveInstanceState(@NonNull Bundle outState) {
107+
super.onSaveInstanceState(outState);
108+
outState.putLongArray(SELECTED_INSTANCES_KEY, ArrayUtils.toPrimitive(
109+
selectedForms.toArray(new Long[selectedInstances.size()])));
110+
111+
}
112+
95113
@Override
96114
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor cursor) {
97115
if (cursor != null) {

skunkworks_crow/src/main/java/org/odk/share/fragments/FilledFormsFragment.java

+19-3
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,32 @@ public class FilledFormsFragment extends InstanceListFragment implements LoaderM
5757
private static final int INSTANCE_LOADER = 1;
5858
private InstanceAdapter instanceAdapter;
5959
private LinkedHashSet<Long> selectedInstances;
60+
private final String SELECTED_INSTANCES_KEY="ROTATION_SELECTED_INSTANCES";
6061

6162

6263
public FilledFormsFragment() {
6364
}
6465

6566
@Override
6667
public View onCreateView(LayoutInflater inflater, ViewGroup container,
67-
Bundle savedInstanceState) {
68+
Bundle savedInstanceState) {
6869
setHasOptionsMenu(true);
6970
View view = inflater.inflate(R.layout.fragment_forms, container, false);
7071
ButterKnife.bind(this, view);
71-
7272
selectedInstances = new LinkedHashSet<>();
73-
7473
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
7574
llm.setOrientation(LinearLayoutManager.VERTICAL);
7675
recyclerView.setLayoutManager(llm);
76+
77+
if(savedInstanceState!=null)
78+
{
79+
long[] previousSelectedInstances=savedInstanceState.getLongArray(SELECTED_INSTANCES_KEY);
80+
for(int i=0;i<previousSelectedInstances.length;i++)
81+
{
82+
selectedInstances.add(previousSelectedInstances[i]);
83+
}
84+
}
85+
7786
return view;
7887
}
7988

@@ -89,6 +98,13 @@ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
8998
return new InstancesDao().getSavedInstancesCursorLoader(getFilterText(), getSortingOrder());
9099
}
91100

101+
@Override public void onSaveInstanceState(@NonNull Bundle outState) {
102+
super.onSaveInstanceState(outState);
103+
outState.putLongArray(SELECTED_INSTANCES_KEY, ArrayUtils.toPrimitive(
104+
selectedInstances.toArray(new Long[selectedInstances.size()])));
105+
106+
}
107+
92108
@Override
93109
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor cursor) {
94110
if (cursor != null) {

0 commit comments

Comments
 (0)