@@ -63,30 +63,48 @@ Wrapper retrieve(String screenName, Activity activity){
63
63
}
64
64
}
65
65
66
- @ Nullable private Fragment getGcmReceiverUIForeground (List <Fragment > fragments , String screenName ) {
66
+ @ Nullable
67
+ private Fragment getGcmReceiverUIForeground (List <Fragment > fragments , String screenName ) {
67
68
if (fragments == null ) return null ;
68
69
69
70
for (Fragment fragment : fragments ) {
70
71
if (fragment != null && isVisible (fragment ) && fragment instanceof GcmReceiverUIForeground ) {
71
72
GcmReceiverUIForeground gcmReceiverUIForeground = (GcmReceiverUIForeground ) fragment ;
72
73
boolean isTargetScreen = gcmReceiverUIForeground .matchesTarget (screenName );
73
74
74
- if (isTargetScreen ) {
75
- return fragment ;
76
- } else {
77
- gcmReceiversUIForegroundNotTargetScreen .add (fragment );
78
- continue ;
75
+ if (isTargetScreen ) return fragment ;
76
+
77
+ gcmReceiversUIForegroundNotTargetScreen .add (fragment );
78
+
79
+ if (fragment .getChildFragmentManager () != null ) {
80
+ Fragment candidate = getGcmReceiverUIForegroundFromChild (fragment , screenName );
81
+ if (candidate != null ) return candidate ;
79
82
}
80
- } else if (fragment != null && fragment .getChildFragmentManager () != null ) {
81
- List < Fragment > childFragments = fragment . getChildFragmentManager (). getFragments ( );
82
- return getGcmReceiverUIForeground ( childFragments , screenName ) ;
83
+ } else if (fragment != null && isVisible ( fragment ) && fragment .getChildFragmentManager () != null ) {
84
+ Fragment candidate = getGcmReceiverUIForegroundFromChild ( fragment , screenName );
85
+ if ( candidate != null ) return candidate ;
83
86
}
84
87
}
85
88
86
89
if (!gcmReceiversUIForegroundNotTargetScreen .isEmpty ()) return gcmReceiversUIForegroundNotTargetScreen .get (0 );
87
90
else return null ;
88
91
}
89
92
93
+ private Fragment getGcmReceiverUIForegroundFromChild (Fragment fragment , String screenName ) {
94
+ List <Fragment > childFragments = fragment .getChildFragmentManager ().getFragments ();
95
+ Fragment candidate = getGcmReceiverUIForeground (childFragments , screenName );
96
+
97
+ if (candidate == null ) return null ;
98
+
99
+ GcmReceiverUIForeground gcmReceiverUIForeground = (GcmReceiverUIForeground ) candidate ;
100
+ boolean isTargetScreen = gcmReceiverUIForeground .matchesTarget (screenName );
101
+ if (isTargetScreen ) return candidate ;
102
+
103
+ gcmReceiversUIForegroundNotTargetScreen .add (candidate );
104
+
105
+ return null ;
106
+ }
107
+
90
108
static class Wrapper {
91
109
private final GcmReceiverUIForeground gcmReceiverUIForeground ;
92
110
private final boolean targetScreen ;
0 commit comments