Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王宇航
supplier
Commits
bb53a46a
Commit
bb53a46a
authored
Apr 26, 2021
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、BaseFragmentActivity页面添加嵌套多层Fragment,Fragment某些情况下onActivityResult无法被回调问题
parent
6ec228e3
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
94 additions
and
21 deletions
+94
-21
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
+1
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/mealstand/FineChildAllFragment.java
+2
-6
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/mealstand/FineChildOneselfFragment.java
+2
-3
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/mealstand/FineFragment.java
+13
-4
component-table/src/main/res/layout/fragment_fine.xml
+1
-1
library-base/src/main/java/com/jess/arms/base/BaseFragmentActivity.java
+73
-0
library-database/src/main/java/com/gingersoft/gsa/cloud/database/DiscountConstact.java
+1
-5
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/device/pos/yedpay/YedpayCallbackImp.java
+1
-1
No files found.
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
View file @
bb53a46a
...
...
@@ -394,7 +394,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
@Override
public
void
startMealStandActivity
()
{
startActivity
(
new
Intent
(
this
,
MealStandActivity
2
.
class
));
startActivity
(
new
Intent
(
this
,
MealStandActivity
.
class
));
}
@Override
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/mealstand/FineChildAllFragment.java
View file @
bb53a46a
...
...
@@ -6,21 +6,17 @@ import android.os.Bundle;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerFine
Item
AllComponent
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerFine
Child
AllComponent
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood
;
import
com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FineChildAllPresenter
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.base.DefaultAdapter
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.FineChildAllContract
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -64,7 +60,7 @@ public class FineChildAllFragment extends BaseFragment<FineChildAllPresenter> im
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerFine
Item
AllComponent
//如找不到该类,请编译一下项目
DaggerFine
Child
AllComponent
//如找不到该类,请编译一下项目
.
builder
()
.
appComponent
(
appComponent
)
.
view
(
this
)
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/mealstand/FineChildOneselfFragment.java
View file @
bb53a46a
...
...
@@ -7,10 +7,9 @@ import android.view.LayoutInflater;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.LinearLayout
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerFine
Item
OneselfComponent
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerFine
Child
OneselfComponent
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.FineChildOneselfContract
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood
;
import
com.jess.arms.base.BaseFragment
;
...
...
@@ -57,7 +56,7 @@ public class FineChildOneselfFragment extends BaseFragment<FineChildOneselfPrese
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerFine
Item
OneselfComponent
//如找不到该类,请编译一下项目
DaggerFine
Child
OneselfComponent
//如找不到该类,请编译一下项目
.
builder
()
.
appComponent
(
appComponent
)
.
view
(
this
)
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/fragment/mealstand/FineFragment.java
View file @
bb53a46a
...
...
@@ -2,21 +2,26 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.fragment.mealstand;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.os.Message
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.viewpager2.widget.ViewPager2
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.di.component.DaggerFineComponent
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.FineContract
;
import
com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FinePresenter
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
;
import
com.google.android.material.tabs.TabLayout
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.FineContract
;
import
com.gingersoft.gsa.cloud.table.mvp.presenter.mealstand.FinePresenter
;
import
com.gingersoft.gsa.cloud.table.R
;
import
butterknife.BindView
;
import
static
com
.
jess
.
arms
.
utils
.
Preconditions
.
checkNotNull
;
...
...
@@ -36,6 +41,10 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
public
class
FineFragment
extends
BaseFragment
<
FinePresenter
>
implements
FineContract
.
View
{
@BindView
(
R2
.
id
.
tabLayout
)
TabLayout
tabLayout
;
@BindView
(
R2
.
id
.
viewPager
)
ViewPager2
viewPager
;
public
static
FineFragment
newInstance
()
{
FineFragment
fragment
=
new
FineFragment
();
...
...
component-table/src/main/res/layout/fragment_fine.xml
View file @
bb53a46a
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res
/android
"
xmlns:app=
"http://schemas.android.com/apk/res
-auto
"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
...
...
library-base/src/main/java/com/jess/arms/base/BaseFragmentActivity.java
View file @
bb53a46a
...
...
@@ -17,16 +17,20 @@ package com.jess.arms.base;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.pm.ActivityInfo
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.util.AttributeSet
;
import
android.util.Log
;
import
android.view.MotionEvent
;
import
android.view.View
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentActivity
;
import
androidx.fragment.app.FragmentManager
;
import
com.gyf.immersionbar.ImmersionBar
;
import
com.jess.arms.base.delegate.IActivity
;
...
...
@@ -41,6 +45,8 @@ import com.qmuiteam.qmui.arch.QMUIFragmentActivity;
import
com.qmuiteam.qmui.util.QMUIDeviceHelper
;
import
com.trello.rxlifecycle2.android.ActivityEvent
;
import
java.util.List
;
import
javax.inject.Inject
;
import
butterknife.ButterKnife
;
...
...
@@ -165,6 +171,73 @@ public abstract class BaseFragmentActivity<P extends IPresenter> extends Fragmen
this
.
mPresenter
=
null
;
}
/**
* 在Fragment中使用startActivityForResult之后,onActivityResult的调用是从activity中开始的(即会先调用activity中的onActivityResult)。
*
* 一.只嵌套了一层Fragment(比如activity中使用了viewPager,viewPager中添加了几个Fragment)
*
* 在这种情况下要注意几个点:
* 1.在Fragment中使用startActivityForResult的时候,不要使用getActivity().startActivityForResult,而是应该直接使startActivityForResult()。
* 2.如果activity中重写了onActivityResult,那么activity中的onActivityResult一定要加上super.onActivityResult(requestCode, resultCode, data)。
*
* 如果违反了上面两种情况,那么onActivityResult只能够传递到activity中的,无法传递到Fragment中的。
* 没有违反上面两种情况的前提下,可以直接在Fragment中使用startActivityForResult和onActivityResult,和在activity中使用的一样。
*
*
* 二.嵌套多层Fragment(比如activity中使用了viewPager,viewPager中添加了几个Fragment,即第一层Fragment。其中一个Fragment又使用了一个ViewPager,这个ViewPager又加入了几个Fragment,即第二层Fragment)
* 在这种情况下activity中的onActivityResult调用无法传到第二层Fragment中。自己动手丰衣足食,我们只有手动传了。
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
FragmentManager
fragmentManager
=
getSupportFragmentManager
();
for
(
int
indext
=
0
;
indext
<
fragmentManager
.
getFragments
().
size
();
indext
++)
{
/**
* 找到第一层Fragment
*/
Fragment
fragment
=
fragmentManager
.
getFragments
().
get
(
indext
);
if
(
fragment
==
null
)
{
Log
.
w
(
TAG
,
"Activity result no fragment exists for index: 0x"
+
Integer
.
toHexString
(
requestCode
));
}
else
{
handleResult
(
fragment
,
requestCode
,
resultCode
,
data
);
}
}
}
/**
* 递归调用,对所有的子Fragment生效
*
* @param fragment
* @param requestCode
* @param resultCode
* @param data
*/
private
void
handleResult
(
Fragment
fragment
,
int
requestCode
,
int
resultCode
,
Intent
data
)
{
/**
* 调用每个Fragment的onActivityResult
*/
fragment
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
Log
.
e
(
TAG
,
"handleResult"
);
/**
* 找到第二层Fragment
*/
List
<
Fragment
>
childFragment
=
fragment
.
getChildFragmentManager
().
getFragments
();
if
(
childFragment
!=
null
)
{
for
(
Fragment
f
:
childFragment
)
{
if
(
f
!=
null
)
{
handleResult
(
f
,
requestCode
,
resultCode
,
data
);
}
}
}
if
(
childFragment
==
null
)
{
Log
.
e
(
TAG
,
"handleResult childFragment == null"
);
}
}
@Override
public
SupportActivityDelegate
getSupportDelegate
()
{
return
mDelegate
;
...
...
library-database/src/main/java/com/gingersoft/gsa/cloud/database/DiscountConstact.java
View file @
bb53a46a
...
...
@@ -12,11 +12,7 @@ public interface DiscountConstact {
*/
byte
DISCOUNT_TYPE
=
0
;
/**
* 會員優惠券類型
*/
byte
MEMBER_COUPON_TYPE
=
1
;
/**
* 會員錢包券類型
*/
byte
WALLET_COUPON_TYPE
=
2
;
byte
WALLET_COUPON_TYPE
=
1
;
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/device/pos/yedpay/YedpayCallbackImp.java
View file @
bb53a46a
...
...
@@ -37,7 +37,7 @@ public class YedpayCallbackImp implements YedpayCallback {
if
(
fragment
!=
null
)
{
Uri
uri2
=
Uri
.
parse
(
uri
);
Intent
intent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
uri2
);
fragment
.
getActivity
().
startActivityForResult
(
intent
,
YedpayConstant
.
CallRequestCode
.
SALE_REQUEST_CODE
);
fragment
.
startActivityForResult
(
intent
,
YedpayConstant
.
CallRequestCode
.
SALE_REQUEST_CODE
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment