Skip to content

Commit 11d5abb

Browse files
authored
Merge pull request #1172 from liaolintao/master
fix some bugs
2 parents 0f3c03d + d5e79a3 commit 11d5abb

File tree

8 files changed

+59
-22
lines changed

8 files changed

+59
-22
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ buildscript {
1313

1414
allprojects {
1515
repositories {
16-
jcenter()
1716
google()
17+
jcenter()
1818
}
1919
}
2020

demo/build.gradle

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,17 @@ android {
5252
}
5353

5454
dependencies {
55-
compile fileTree(include: ['*.jar'], dir: 'libs')
56-
testCompile 'junit:junit:4.12'
57-
compile "com.android.support:appcompat-v7:$rootProject.v4Version"
58-
compile "com.android.support:design:$rootProject.v4Version"
59-
compile "com.android.support:cardview-v7:$rootProject.v4Version"
60-
compile "com.android.support:recyclerview-v7:$rootProject.v4Version"
61-
compile project(':fragmentation')
62-
compile project(':fragmentation_swipeback')
55+
api fileTree(include: ['*.jar'], dir: 'libs')
56+
testApi 'junit:junit:4.12'
57+
api "com.android.support:appcompat-v7:$rootProject.v4Version"
58+
api "com.android.support:design:$rootProject.v4Version"
59+
api "com.android.support:cardview-v7:$rootProject.v4Version"
60+
api "com.android.support:recyclerview-v7:$rootProject.v4Version"
61+
api project(':fragmentation')
62+
api project(':fragmentation_swipeback')
6363
// EventBus
64-
compile project(':eventbus_activity_scope')
65-
compile 'org.greenrobot:eventbus:3.0.0'
64+
api project(':eventbus_activity_scope')
65+
api 'org.greenrobot:eventbus:3.0.0'
6666
// apt 'org.greenrobot:eventbus-annotation-processor:3.0.1'
6767
}
6868

eventbus_activity_scope/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ android {
1313
}
1414

1515
dependencies {
16-
provided 'org.greenrobot:eventbus:3.0.0'
16+
compileOnly 'org.greenrobot:eventbus:3.0.0'
1717
}

fragmentation/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ android {
1212
}
1313

1414
dependencies {
15-
provided "com.android.support:appcompat-v7:$rootProject.v4Version"
16-
compile project(':fragmentation_core')
15+
compileOnly "com.android.support:appcompat-v7:$rootProject.v4Version"
16+
api project(':fragmentation_core')
1717
}

fragmentation/src/main/java/me/yokeyword/fragmentation/SupportFragment.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.os.Bundle;
66
import android.support.annotation.Nullable;
77
import android.support.v4.app.Fragment;
8+
import android.support.v4.app.FragmentActivity;
89
import android.view.View;
910
import android.view.animation.Animation;
1011

@@ -18,7 +19,7 @@
1819
*/
1920
public class SupportFragment extends Fragment implements ISupportFragment {
2021
final SupportFragmentDelegate mDelegate = new SupportFragmentDelegate(this);
21-
protected SupportActivity _mActivity;
22+
protected FragmentActivity _mActivity;
2223

2324
@Override
2425
public SupportFragmentDelegate getSupportDelegate() {
@@ -38,7 +39,7 @@ public ExtraTransaction extraTransaction() {
3839
public void onAttach(Activity activity) {
3940
super.onAttach(activity);
4041
mDelegate.onAttach(activity);
41-
_mActivity = (SupportActivity) mDelegate.getActivity();
42+
_mActivity = mDelegate.getActivity();
4243
}
4344

4445
@Override

fragmentation_core/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ android {
1919
}
2020

2121
dependencies {
22-
provided "com.android.support:appcompat-v7:$rootProject.v4Version"
22+
compileOnly "com.android.support:appcompat-v7:$rootProject.v4Version"
2323
}
2424

2525
//publish {

fragmentation_core/src/main/java/me/yokeyword/fragmentation/helper/internal/VisibleDelegate.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public class VisibleDelegate {
2626
private boolean mInvisibleWhenLeave;
2727
private boolean mIsFirstVisible = true;
2828
private boolean mFirstCreateViewCompatReplace = true;
29+
private boolean mAbortInitVisible = false;
30+
private Runnable taskDispatchSupportVisible;
2931

3032
private Handler mHandler;
3133
private Bundle mSaveInstanceState;
@@ -61,6 +63,10 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
6163
mFirstCreateViewCompatReplace = false;
6264
}
6365

66+
initVisible();
67+
}
68+
69+
private void initVisible() {
6470
if (!mInvisibleWhenLeave && !mFragment.isHidden() && mFragment.getUserVisibleHint()) {
6571
if ((mFragment.getParentFragment() != null && isFragmentVisible(mFragment.getParentFragment()))
6672
|| mFragment.getParentFragment() == null) {
@@ -76,10 +82,21 @@ public void onResume() {
7682
mNeedDispatch = false;
7783
dispatchSupportVisible(true);
7884
}
85+
} else {
86+
if (mAbortInitVisible) {
87+
mAbortInitVisible = false;
88+
initVisible();
89+
}
7990
}
8091
}
8192

8293
public void onPause() {
94+
if (taskDispatchSupportVisible != null) {
95+
getHandler().removeCallbacks(taskDispatchSupportVisible);
96+
mAbortInitVisible = true;
97+
return;
98+
}
99+
83100
if (mIsSupportVisible && isFragmentVisible(mFragment)) {
84101
mNeedDispatch = false;
85102
mInvisibleWhenLeave = false;
@@ -92,7 +109,7 @@ public void onPause() {
92109
public void onHiddenChanged(boolean hidden) {
93110
if (!hidden && !mFragment.isResumed()) {
94111
//if fragment is shown but not resumed, ignore...
95-
mInvisibleWhenLeave = false;
112+
onFragmentShownWhenNotResumed();
96113
return;
97114
}
98115
if (hidden) {
@@ -102,6 +119,23 @@ public void onHiddenChanged(boolean hidden) {
102119
}
103120
}
104121

122+
private void onFragmentShownWhenNotResumed() {
123+
mInvisibleWhenLeave = false;
124+
dispatchChildOnFragmentShownWhenNotResumed();
125+
}
126+
127+
private void dispatchChildOnFragmentShownWhenNotResumed() {
128+
FragmentManager fragmentManager = mFragment.getChildFragmentManager();
129+
List<Fragment> childFragments = FragmentationMagician.getActiveFragments(fragmentManager);
130+
if (childFragments != null) {
131+
for (Fragment child : childFragments) {
132+
if (child instanceof ISupportFragment && !child.isHidden() && child.getUserVisibleHint()) {
133+
((ISupportFragment) child).getSupportDelegate().getVisibleDelegate().onFragmentShownWhenNotResumed();
134+
}
135+
}
136+
}
137+
}
138+
105139
public void onDestroyView() {
106140
mIsFirstVisible = true;
107141
}
@@ -126,12 +160,14 @@ private void safeDispatchUserVisibleHint(boolean visible) {
126160
}
127161

128162
private void enqueueDispatchVisible() {
129-
getHandler().post(new Runnable() {
163+
taskDispatchSupportVisible = new Runnable() {
130164
@Override
131165
public void run() {
166+
taskDispatchSupportVisible = null;
132167
dispatchSupportVisible(true);
133168
}
134-
});
169+
};
170+
getHandler().post(taskDispatchSupportVisible);
135171
}
136172

137173
private void dispatchSupportVisible(boolean visible) {

fragmentation_swipeback/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ android {
1313
}
1414

1515
dependencies {
16-
provided "com.android.support:appcompat-v7:$rootProject.v4Version"
17-
provided project(':fragmentation')
16+
compileOnly "com.android.support:appcompat-v7:$rootProject.v4Version"
17+
compileOnly project(':fragmentation')
1818
}

0 commit comments

Comments
 (0)