Find previous active fragment
I have 4 fragments. Following is the navigation flow
[Fragment 1] -> [Fragment 2] -> [Fragment 3]
[Fragment 4] -> [Fragment 3]
If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].
I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?
I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.
Fragment manager looks like this.
FragmentManager Object
onBackPressed of Fragment 3 it I did something like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
I have 4 fragments. Following is the navigation flow
[Fragment 1] -> [Fragment 2] -> [Fragment 3]
[Fragment 4] -> [Fragment 3]
If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].
I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?
I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.
Fragment manager looks like this.
FragmentManager Object
onBackPressed of Fragment 3 it I did something like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago
add a comment |
I have 4 fragments. Following is the navigation flow
[Fragment 1] -> [Fragment 2] -> [Fragment 3]
[Fragment 4] -> [Fragment 3]
If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].
I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?
I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.
Fragment manager looks like this.
FragmentManager Object
onBackPressed of Fragment 3 it I did something like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I have 4 fragments. Following is the navigation flow
[Fragment 1] -> [Fragment 2] -> [Fragment 3]
[Fragment 4] -> [Fragment 3]
If user goes to fragment 3 from 4 (i.e [Fragment 4] -> [Fragment 3]) on back press of [Fragment 3] it should go to [Fragment 1].
I think if I am able to find the previous fragment then It will be easy to redirect to [fragment 1]. Is there any way I can find what was the previous fragment that has been replaced?
I have tried fragmentManager.getBackStackEntryAt(fragmentManager.backStackEntryCount - 1) but is shows only one entry that is of the current fragment.
Fragment manager looks like this.
FragmentManager Object
onBackPressed of Fragment 3 it I did something like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
if (redirectToProductList) {
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
asked 2 days ago
Hammad Arshad
1
1
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago
add a comment |
Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago
Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago
Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago
add a comment |
3 Answers
3
active
oldest
votes
I have already posted this issue and Answer available there please try to search
Source :
Link
override fun onBackPressed() {
if (tabLayout.selectedTabPosition != 0) {
tabLayout.getTabAt(0)?.select()
} else {
super.onBackPressed()
}
}
add a comment |
I resolved the problem. I was not adding fragment into backstack.
fragmentManager.beginTransaction()
.addToBackStack(newFragment.javaClass.name)
.commit()
I then found previous fragment like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
val index = args.host.fragmentManager.backStackEntryCount - 2
if (index >= 0) {
val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
if (prevFrag.name == SearchContainerPresenter::class.java.name)
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
else
return args.host.childFragmentManager.popBackStackImmediate()
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
You can user listener like this,
supportFragmentManager.addOnBackStackChangedListener {
val fragment = supportFragmentManager.findFragmentById(R.id.container)
//Write your logic here
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53944917%2ffind-previous-active-fragment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
I have already posted this issue and Answer available there please try to search
Source :
Link
override fun onBackPressed() {
if (tabLayout.selectedTabPosition != 0) {
tabLayout.getTabAt(0)?.select()
} else {
super.onBackPressed()
}
}
add a comment |
I have already posted this issue and Answer available there please try to search
Source :
Link
override fun onBackPressed() {
if (tabLayout.selectedTabPosition != 0) {
tabLayout.getTabAt(0)?.select()
} else {
super.onBackPressed()
}
}
add a comment |
I have already posted this issue and Answer available there please try to search
Source :
Link
override fun onBackPressed() {
if (tabLayout.selectedTabPosition != 0) {
tabLayout.getTabAt(0)?.select()
} else {
super.onBackPressed()
}
}
I have already posted this issue and Answer available there please try to search
Source :
Link
override fun onBackPressed() {
if (tabLayout.selectedTabPosition != 0) {
tabLayout.getTabAt(0)?.select()
} else {
super.onBackPressed()
}
}
answered 2 days ago
Ashish
322111
322111
add a comment |
add a comment |
I resolved the problem. I was not adding fragment into backstack.
fragmentManager.beginTransaction()
.addToBackStack(newFragment.javaClass.name)
.commit()
I then found previous fragment like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
val index = args.host.fragmentManager.backStackEntryCount - 2
if (index >= 0) {
val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
if (prevFrag.name == SearchContainerPresenter::class.java.name)
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
else
return args.host.childFragmentManager.popBackStackImmediate()
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
I resolved the problem. I was not adding fragment into backstack.
fragmentManager.beginTransaction()
.addToBackStack(newFragment.javaClass.name)
.commit()
I then found previous fragment like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
val index = args.host.fragmentManager.backStackEntryCount - 2
if (index >= 0) {
val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
if (prevFrag.name == SearchContainerPresenter::class.java.name)
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
else
return args.host.childFragmentManager.popBackStackImmediate()
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
I resolved the problem. I was not adding fragment into backstack.
fragmentManager.beginTransaction()
.addToBackStack(newFragment.javaClass.name)
.commit()
I then found previous fragment like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
val index = args.host.fragmentManager.backStackEntryCount - 2
if (index >= 0) {
val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
if (prevFrag.name == SearchContainerPresenter::class.java.name)
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
else
return args.host.childFragmentManager.popBackStackImmediate()
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
I resolved the problem. I was not adding fragment into backstack.
fragmentManager.beginTransaction()
.addToBackStack(newFragment.javaClass.name)
.commit()
I then found previous fragment like this.
override fun onBackPressed(): Boolean {
args.host.hideKeyboard()
val index = args.host.fragmentManager.backStackEntryCount - 2
if (index >= 0) {
val prevFrag = args.host.fragmentManager.getBackStackEntryAt(index)
if (prevFrag.name == SearchContainerPresenter::class.java.name)
args.host.activity?.let {
if (it.supportFragmentManager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)) {
openFirstFragment(it, SupportFragment(MainActivity.SalesRepProduct))
return true
}
}
else
return args.host.childFragmentManager.popBackStackImmediate()
}
return args.host.childFragmentManager.popBackStackImmediate()
}
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
answered yesterday
Hammad Arshad
1
1
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Hammad Arshad is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
You can user listener like this,
supportFragmentManager.addOnBackStackChangedListener {
val fragment = supportFragmentManager.findFragmentById(R.id.container)
//Write your logic here
}
add a comment |
You can user listener like this,
supportFragmentManager.addOnBackStackChangedListener {
val fragment = supportFragmentManager.findFragmentById(R.id.container)
//Write your logic here
}
add a comment |
You can user listener like this,
supportFragmentManager.addOnBackStackChangedListener {
val fragment = supportFragmentManager.findFragmentById(R.id.container)
//Write your logic here
}
You can user listener like this,
supportFragmentManager.addOnBackStackChangedListener {
val fragment = supportFragmentManager.findFragmentById(R.id.container)
//Write your logic here
}
answered yesterday
Akash Dubey
560626
560626
add a comment |
add a comment |
Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.
Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.
Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.
Hammad Arshad is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53944917%2ffind-previous-active-fragment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Possible duplicate of onBackPressed change tabs in android
– Ashish
2 days ago