forked from organicmaps/organicmaps
[android] Workaround of problem with fragment state loss.
This commit is contained in:
parent
424061862b
commit
f96245dcd8
1 changed files with 17 additions and 10 deletions
|
@ -367,7 +367,7 @@ public class MWMActivity extends BaseMwmFragmentActivity
|
|||
|
||||
private void showBookmarks()
|
||||
{
|
||||
// TODO open in fragment?
|
||||
popAllFragments();
|
||||
startActivity(new Intent(this, BookmarkCategoriesActivity.class));
|
||||
}
|
||||
|
||||
|
@ -1086,27 +1086,34 @@ public class MWMActivity extends BaseMwmFragmentActivity
|
|||
|
||||
private boolean popFragment()
|
||||
{
|
||||
final FragmentManager manager = getSupportFragmentManager();
|
||||
for (String tag : new String[]{SearchFragment.class.getName(), DownloadFragment.class.getName()})
|
||||
{
|
||||
Fragment fragment = manager.findFragmentByTag(tag);
|
||||
// TODO we cant pop fragment, if it isn't resumed, cause of 'at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1375)'
|
||||
// consider other possibilities here
|
||||
if (fragment != null && fragment.isResumed())
|
||||
{
|
||||
manager.popBackStackImmediate();
|
||||
if (popFragment(tag))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void popAllFragments()
|
||||
{
|
||||
for (String tag : new String[]{SearchFragment.class.getName(), DownloadFragment.class.getName()})
|
||||
popFragment(tag);
|
||||
}
|
||||
|
||||
private boolean popFragment(String className)
|
||||
{
|
||||
final FragmentManager manager = getSupportFragmentManager();
|
||||
while (manager.getBackStackEntryCount() > 0)
|
||||
Fragment fragment = manager.findFragmentByTag(className);
|
||||
// TODO d.yunitsky
|
||||
// we cant pop fragment, if it isn't resumed, cause of 'at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1375)'
|
||||
if (fragment != null && fragment.isResumed())
|
||||
{
|
||||
manager.popBackStackImmediate();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Callbacks from native map objects touch event.
|
||||
|
|
Loading…
Add table
Reference in a new issue