Skip to content

Commit b2c1534

Browse files
committed
NOS+Bible: Fix bug with config changes and window resizing
1 parent 0cf83a4 commit b2c1534

File tree

4 files changed

+23
-14
lines changed

4 files changed

+23
-14
lines changed

bin/bible/AndroidManifest.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
<activity android:name=".activities.MainActivity"
1414
android:launchMode="singleTask"
15-
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden"
1615
android:exported="true">
1716

1817
<intent-filter>
@@ -24,14 +23,12 @@
2423
<activity android:name=".activities.SearchActivity"
2524
android:parentActivityName=".activities.MainActivity"
2625
android:launchMode="singleTop"
27-
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden"
2826
android:windowSoftInputMode="stateVisible|adjustResize"
2927
android:exported="false" />
3028

3129
<activity android:name=".activities.SettingsActivity"
3230
android:parentActivityName=".activities.MainActivity"
3331
android:launchMode="singleTop"
34-
android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize|keyboard|keyboardHidden"
3532
android:exported="false" />
3633
</application>
3734
</manifest>

bin/nos/AndroidManifest.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
<activity android:name=".activities.MainActivity"
1212
android:launchMode="singleTask"
13-
android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"
1413
android:exported="true">
1514

1615
<intent-filter>
@@ -22,19 +21,16 @@
2221
<activity android:name=".activities.ArticleActivity"
2322
android:parentActivityName=".activities.MainActivity"
2423
android:launchMode="singleTop"
25-
android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"
2624
android:exported="true" />
2725

2826
<activity android:name=".activities.ImageActivity"
2927
android:parentActivityName=".activities.MainActivity"
3028
android:launchMode="singleTop"
31-
android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"
3229
android:exported="true" />
3330

3431
<activity android:name=".activities.SettingsActivity"
3532
android:parentActivityName=".activities.MainActivity"
3633
android:launchMode="singleTop"
37-
android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize"
3834
android:exported="true" />
3935
</application>
4036
</manifest>

bin/nos/src/nl/plaatsoft/nos/android/activities/ArticleActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ public void onCreate(Bundle savedInstanceState) {
3636
setContentView(R.layout.activity_article);
3737

3838
var scroll = (ScrollView)findViewById(R.id.article_scroll);
39-
scroll.post(() -> scroll.scrollTo(0, 0));
39+
if (savedInstanceState == null)
40+
scroll.post(() -> scroll.scrollTo(0, 0));
4041
useWindowInsets(scroll);
4142

4243
var article = IntentCompat.getSerializableExtra(getIntent(), "article", Article.class);

bin/nos/src/nl/plaatsoft/nos/android/activities/MainActivity.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,29 @@ public void onActivityResult(int requestCode, int resultCode, @SuppressWarnings(
140140
}
141141
}
142142

143-
public void onRestoreInstanceState(Bundle savedInstanceState) {
144-
super.onRestoreInstanceState(savedInstanceState);
145-
openTab(savedInstanceState.getInt("openTab"), false);
146-
}
147-
143+
@Override
148144
public void onSaveInstanceState(Bundle savedInstanceState) {
149145
super.onSaveInstanceState(savedInstanceState);
150-
savedInstanceState.putInt("openTab", viewFlipper.getDisplayedChild());
146+
var openTabIndex = viewFlipper.getDisplayedChild();
147+
savedInstanceState.putInt("openTab", openTabIndex);
148+
var currentListView = tabs.get(openTabIndex).listView;
149+
var firstChild = currentListView.getChildAt(0);
150+
var offset = (firstChild == null) ? 0 : firstChild.getTop() - currentListView.getPaddingTop();
151+
savedInstanceState.putInt("listScrollIndex", currentListView.getFirstVisiblePosition());
152+
savedInstanceState.putInt("listScrollOffset", offset);
153+
}
154+
155+
@Override
156+
public void onRestoreInstanceState(Bundle savedInstanceState) {
157+
super.onRestoreInstanceState(savedInstanceState);
158+
var openTabIndex = savedInstanceState.getInt("openTab");
159+
openTab(openTabIndex, false);
160+
handler.post(() -> {
161+
var currentListView = tabs.get(openTabIndex).listView;
162+
int index = savedInstanceState.getInt("listScrollIndex");
163+
int offset = savedInstanceState.getInt("listScrollOffset");
164+
currentListView.setSelectionFromTop(index, offset);
165+
});
151166
}
152167

153168
@Override

0 commit comments

Comments
 (0)