2
2
3
3
import android .content .Context ;
4
4
import android .os .Bundle ;
5
+ import android .os .Handler ;
5
6
import android .view .LayoutInflater ;
6
7
import android .view .View ;
7
8
import android .view .ViewGroup ;
8
9
9
10
import androidx .annotation .NonNull ;
10
11
import androidx .annotation .Nullable ;
11
12
import androidx .fragment .app .Fragment ;
12
- import androidx .fragment .app .FragmentActivity ;
13
13
import androidx .fragment .app .FragmentManager ;
14
14
import androidx .fragment .app .FragmentTransaction ;
15
15
@@ -35,15 +35,16 @@ public class ParentFragment extends Fragment
35
35
*/
36
36
private void addFragmentsToContainer () {
37
37
38
- FragmentActivity activity = getActivity ();
39
- if (activity == null ) {
40
- return ;
38
+ FragmentManager fm = getChildFragmentManager ();
39
+ FragmentTransaction ft = fm .beginTransaction ();
40
+
41
+ if (!onDeviceFragment .isAdded ()) {
42
+ ft .add (R .id .fragmentContainer , onDeviceFragment );
43
+ }
44
+ if (!downloadableFragment .isAdded ()) {
45
+ ft .add (R .id .fragmentContainer , downloadableFragment );
41
46
}
42
47
43
- FragmentManager fm = activity .getSupportFragmentManager ();
44
- FragmentTransaction ft = fm .beginTransaction ();
45
- ft .add (R .id .fragmentContainer , onDeviceFragment );
46
- ft .add (R .id .fragmentContainer , downloadableFragment );
47
48
ft .commit ();
48
49
}
49
50
@@ -56,17 +57,18 @@ private void selectDefaultTab(final TabLayout tabLayout) {
56
57
Context context = getContext ();
57
58
if (context == null ) {
58
59
tabLayout .selectTab (tabLayout .getTabAt (1 ));
60
+ return ;
59
61
}
60
62
61
63
final MeditationDao dao =
62
64
MeditationDatabase .getDatabase (context ).meditationDao ();
63
65
64
- MeditationDatabase .databaseWriteExecutor .execute (new Runnable () {
65
- @ Override
66
- public void run () {
67
- int count = dao . getAllOnDeviceCount ();
68
- tabLayout .selectTab (tabLayout .getTabAt (count > 0 ? 0 : 1 ));
69
- }
66
+ MeditationDatabase .databaseWriteExecutor .execute (() -> {
67
+
68
+ int count = dao . getAllOnDeviceCount ();
69
+ new Handler ( context . getMainLooper ()). post (() ->
70
+ tabLayout .selectTab (tabLayout .getTabAt (count > 0 ? 0 : 1 ))
71
+ );
70
72
});
71
73
}
72
74
@@ -106,14 +108,9 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
106
108
@ Override
107
109
public void onTabSelected (TabLayout .Tab tab ) {
108
110
109
- FragmentActivity activity = getActivity ();
110
- if (activity == null ) {
111
- return ;
112
- }
113
-
114
111
int position = tab .getPosition ();
115
112
116
- FragmentManager fm = activity . getSupportFragmentManager ();
113
+ FragmentManager fm = getChildFragmentManager ();
117
114
FragmentTransaction ft = fm .beginTransaction ();
118
115
ft .hide (position == 0 ? downloadableFragment : onDeviceFragment );
119
116
ft .show (position == 0 ? onDeviceFragment : downloadableFragment );
@@ -122,7 +119,7 @@ public void onTabSelected(TabLayout.Tab tab) {
122
119
123
120
@ Override
124
121
public void onTabReselected (TabLayout .Tab tab ) {
125
- // do nothing
122
+ onTabSelected ( tab );
126
123
}
127
124
128
125
@ Override
0 commit comments