Skip to content

Commit e382f11

Browse files
author
liang02.wang
committed
修改bug
1 parent ef4be71 commit e382f11

File tree

8 files changed

+122
-46
lines changed

8 files changed

+122
-46
lines changed

.idea/codeStyles/Project.xml

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/me/liam/helper/FragmentUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ public static void getAllFragments(List<SupportFragment> list, FragmentManager f
3838
for (Fragment f: fm.getFragments()){
3939
if (f instanceof SupportFragment && !f.isRemoving() && !f.isDetached()){
4040
list.add((SupportFragment) f);
41-
if (f.getChildFragmentManager().getFragments() != null
42-
&& f.getChildFragmentManager().getFragments().size() != 0){
41+
if (f.getChildFragmentManager().getFragments().size() != 0){
4342
getAllFragments(list,f.getChildFragmentManager());
4443
}
4544
}

app/src/main/java/me/liam/support/ExtraTransaction.java

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import androidx.fragment.app.FragmentTransaction;
1010

1111
import java.util.List;
12-
import java.util.UUID;
1312

1413
import me.liam.anim.FragmentAnimation;
1514
import me.liam.fragmentation.R;
@@ -31,14 +30,14 @@ public abstract class ExtraTransaction {
3130

3231
public abstract ExtraTransaction addBackStack(boolean addBackStack);
3332

34-
public abstract ExtraTransaction show(SupportFragment... show);
35-
36-
public abstract ExtraTransaction hide(SupportFragment... hide);
37-
3833
public abstract ExtraTransaction runOnExecute(Runnable run);
3934

4035
public abstract void loadRootFragment(int containerId, SupportFragment to);
4136

37+
public abstract void show(SupportFragment... show);
38+
39+
public abstract void hide(SupportFragment... hide);
40+
4241
public abstract void start(SupportFragment to);
4342

4443
public abstract void startWithPop(SupportFragment to);
@@ -65,6 +64,8 @@ public abstract class ExtraTransaction {
6564

6665
public abstract void remove(SupportFragment remove, boolean anim);
6766

67+
public abstract void remove(SupportFragment... remove);
68+
6869
static class ExtraTransactionImpl extends ExtraTransaction {
6970

7071
private SupportFragment from;
@@ -117,17 +118,6 @@ public ExtraTransaction addBackStack(boolean addBackStack) {
117118
return this;
118119
}
119120

120-
@Override
121-
public ExtraTransaction show(SupportFragment... show) {
122-
record.show = show;
123-
return this;
124-
}
125-
126-
@Override
127-
public ExtraTransaction hide(SupportFragment... hide) {
128-
record.hide = hide;
129-
return this;
130-
}
131121

132122
@Override
133123
public ExtraTransaction runOnExecute(Runnable run) {
@@ -143,7 +133,6 @@ public long run() {
143133
bindFragmentOptions(to,containerId,record);
144134
to.setFragmentAnimation(record.fragmentAnimation);
145135
FragmentTransaction ft = from.getChildFragmentManager().beginTransaction();
146-
showHide(ft);
147136
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
148137
ft.add(containerId,to,record.tag);
149138
supportCommit(ft,record.runOnExecute);
@@ -152,6 +141,36 @@ public long run() {
152141
});
153142
}
154143

144+
@Override
145+
public void show(final SupportFragment... show) {
146+
actionQueue.enqueue(new Action() {
147+
@Override
148+
public long run() {
149+
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
150+
for (SupportFragment f : show){
151+
ft.show(f);
152+
}
153+
supportCommit(ft,record.runOnExecute);
154+
return 0;
155+
}
156+
});
157+
}
158+
159+
@Override
160+
public void hide(final SupportFragment... hide) {
161+
actionQueue.enqueue(new Action() {
162+
@Override
163+
public long run() {
164+
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
165+
for (SupportFragment f : hide){
166+
ft.hide(f);
167+
}
168+
supportCommit(ft,record.runOnExecute);
169+
return 0;
170+
}
171+
});
172+
}
173+
155174
@Override
156175
public void start(final SupportFragment to) {
157176
actionQueue.enqueue(new Action() {
@@ -160,7 +179,6 @@ public long run() {
160179
bindFragmentOptions(to,from.getContainerId(),record);
161180
to.setFragmentAnimation(record.fragmentAnimation);
162181
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
163-
showHide(ft);
164182
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
165183
ft.add(from.getContainerId(),to,record.tag);
166184
supportCommit(ft,record.runOnExecute);
@@ -177,7 +195,6 @@ public long run() {
177195
bindFragmentOptions(to,from.getContainerId(),record);
178196
to.setFragmentAnimation(record.fragmentAnimation);
179197
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
180-
showHide(ft);
181198
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
182199
ft.add(from.getContainerId(),to,record.tag);
183200
supportCommit(ft,record.runOnExecute);
@@ -187,7 +204,6 @@ public void onEnterAnimEnd() {
187204
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
188205
ft.remove(from);
189206
supportCommit(ft);
190-
191207
}
192208
});
193209
return 0;
@@ -197,7 +213,7 @@ public void onEnterAnimEnd() {
197213

198214
@Override
199215
public void startWithPopTo(SupportFragment to, Class popToCls) {
200-
startWithPopTo(to,popToCls);
216+
startWithPopTo(to,popToCls,true);
201217
}
202218

203219
@Override
@@ -210,7 +226,6 @@ public long run() {
210226
bindFragmentOptions(to,from.getContainerId(),record);
211227
to.setFragmentAnimation(record.fragmentAnimation);
212228
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
213-
showHide(ft);
214229
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
215230
ft.add(from.getContainerId(),to,record.tag);
216231
supportCommit(ft,record.runOnExecute);
@@ -355,17 +370,13 @@ public int actionType() {
355370
});
356371
}
357372

358-
void showHide(FragmentTransaction ft){
359-
if (record.show != null){
360-
for (SupportFragment f : record.show){
361-
ft.show(f);
362-
}
363-
}
364-
if (record.hide != null){
365-
for (SupportFragment f : record.hide){
366-
ft.hide(f);
367-
}
373+
@Override
374+
public void remove(SupportFragment... remove) {
375+
FragmentTransaction ft = from.getFragmentManager().beginTransaction();
376+
for (SupportFragment f : remove){
377+
ft.remove(f);
368378
}
379+
supportCommit(ft,record.runOnExecute);
369380
}
370381

371382
Bundle getArguments(SupportFragment target){

app/src/main/java/me/liam/support/ISupportActivity.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,18 @@ public interface ISupportActivity {
3030

3131
public void start(SupportFragment from, SupportFragment to,boolean addToBackStack);
3232

33+
public void startWithPop(SupportFragment to);
34+
3335
public void startWithPop(SupportFragment from, SupportFragment to);
3436

37+
public void startWithPopTo(SupportFragment to,Class cls);
38+
39+
public void startWithPopTo(SupportFragment to,Class cls,boolean includeTarget);
40+
41+
public void startWithPopTo(SupportFragment from, SupportFragment to,Class cls);
42+
43+
public void startWithPopTo(SupportFragment from, SupportFragment to,Class cls, boolean includeTarget);
44+
3545
public void pop();
3646

3747
public void popTo(Class cls);

app/src/main/java/me/liam/support/ISupportFragment.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ public interface ISupportFragment {
4545

4646
public void startWithPop(SupportFragment to);
4747

48+
public void startWithPopTo(SupportFragment to,Class cls);
49+
50+
public void startWithPopTo(SupportFragment to,Class cls,boolean includeTarget);
51+
4852
public void pop();
4953

5054
public void popTo(Class cls);

app/src/main/java/me/liam/support/SupportActivity.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,8 @@
88
import androidx.annotation.Nullable;
99
import androidx.appcompat.app.AppCompatActivity;
1010
import androidx.core.app.ActivityCompat;
11-
import androidx.fragment.app.Fragment;
12-
import androidx.fragment.app.FragmentManager;
1311
import me.liam.anim.DefaultAnimation;
1412
import me.liam.anim.FragmentAnimation;
15-
import me.liam.anim.NoneAnim;
1613
import me.liam.helper.FragmentUtils;
1714

1815
public class SupportActivity extends AppCompatActivity implements ISupportActivity {
@@ -106,11 +103,36 @@ public void start(SupportFragment from, SupportFragment to, boolean addToBackSta
106103
supportTransaction.start(from,to,addToBackStack);
107104
}
108105

106+
@Override
107+
public void startWithPop(SupportFragment to) {
108+
supportTransaction.startWithPop(FragmentUtils.getLastFragment(getSupportFragmentManager()), to);
109+
}
110+
109111
@Override
110112
public void startWithPop(SupportFragment from, SupportFragment to) {
111113
supportTransaction.startWithPop(from, to);
112114
}
113115

116+
@Override
117+
public void startWithPopTo(SupportFragment to, Class cls) {
118+
supportTransaction.startWithPopTo(FragmentUtils.getLastFragment(getSupportFragmentManager()),to,cls,true);
119+
}
120+
121+
@Override
122+
public void startWithPopTo(SupportFragment to, Class cls, boolean includeTarget) {
123+
supportTransaction.startWithPopTo(FragmentUtils.getLastFragment(getSupportFragmentManager()),to,cls,includeTarget);
124+
}
125+
126+
@Override
127+
public void startWithPopTo(SupportFragment from, SupportFragment to, Class cls) {
128+
supportTransaction.startWithPopTo(from,to,cls,true);
129+
}
130+
131+
@Override
132+
public void startWithPopTo(SupportFragment from, SupportFragment to, Class cls, boolean includeTarget) {
133+
supportTransaction.startWithPopTo(from,to,cls,includeTarget);
134+
}
135+
114136
@Override
115137
public void pop() {
116138
supportTransaction.pop(getSupportFragmentManager());

app/src/main/java/me/liam/support/SupportFragment.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,16 @@
44
import android.os.Bundle;
55
import android.os.Handler;
66
import android.os.Looper;
7-
import android.util.Log;
87
import android.view.LayoutInflater;
98
import android.view.View;
109
import android.view.ViewGroup;
1110
import android.view.animation.Animation;
1211
import android.view.animation.AnimationUtils;
13-
import android.widget.Toast;
1412

1513
import androidx.annotation.NonNull;
1614
import androidx.annotation.Nullable;
1715
import androidx.fragment.app.Fragment;
1816
import androidx.fragment.app.FragmentTransaction;
19-
import androidx.lifecycle.Lifecycle;
20-
21-
import com.blankj.utilcode.util.ToastUtils;
2217

2318
import me.liam.anim.FragmentAnimation;
2419
import me.liam.anim.NoneAnim;
@@ -301,6 +296,20 @@ public void startWithPop(SupportFragment to) {
301296
.startWithPop(this,to);
302297
}
303298

299+
@Override
300+
public void startWithPopTo(SupportFragment to, Class cls) {
301+
((SupportActivity)getActivity())
302+
.getSupportTransaction()
303+
.startWithPopTo(this,to,cls,true);
304+
}
305+
306+
@Override
307+
public void startWithPopTo(SupportFragment to, Class cls, boolean includeTarget) {
308+
((SupportActivity)getActivity())
309+
.getSupportTransaction()
310+
.startWithPopTo(this,to,cls,includeTarget);
311+
}
312+
304313
@Override
305314
public void pop() {
306315
((SupportActivity)getActivity())

app/src/main/java/me/liam/support/TransactionRecord.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@ class TransactionRecord {
2323

2424
boolean addBackStack = true;
2525

26-
SupportFragment[] show;
27-
28-
SupportFragment[] hide;
29-
3026
Runnable runOnExecute;
3127

3228
Class popToCls;

0 commit comments

Comments
 (0)