forked from organicmaps/organicmaps
[android] Fixed crash during back pressing on fragment that doesn't implement onBackPressedListener interface
This commit is contained in:
parent
df4a680a18
commit
7206ae61b4
1 changed files with 16 additions and 3 deletions
|
@ -23,6 +23,8 @@ import com.mapswithme.util.PermissionsUtils;
|
|||
import com.mapswithme.util.ThemeUtils;
|
||||
import com.mapswithme.util.UiUtils;
|
||||
import com.mapswithme.util.Utils;
|
||||
import com.mapswithme.util.log.Logger;
|
||||
import com.mapswithme.util.log.LoggerFactory;
|
||||
|
||||
public abstract class BaseMwmFragmentActivity extends AppCompatActivity
|
||||
implements BaseActivity
|
||||
|
@ -236,7 +238,7 @@ public abstract class BaseMwmFragmentActivity extends AppCompatActivity
|
|||
}
|
||||
FragmentManager manager = getSupportFragmentManager();
|
||||
String name = getFragmentClass().getName();
|
||||
BaseMwmFragment fragment = (BaseMwmFragment) manager.findFragmentByTag(name);
|
||||
Fragment fragment = manager.findFragmentByTag(name);
|
||||
|
||||
if (fragment == null)
|
||||
{
|
||||
|
@ -250,9 +252,20 @@ public abstract class BaseMwmFragmentActivity extends AppCompatActivity
|
|||
super.onBackPressed();
|
||||
}
|
||||
|
||||
protected boolean onBackPressedInternal(@NonNull BaseMwmFragment currentFragment)
|
||||
private boolean onBackPressedInternal(@NonNull Fragment currentFragment)
|
||||
{
|
||||
return currentFragment.onBackPressed();
|
||||
try
|
||||
{
|
||||
OnBackPressListener listener = (OnBackPressListener) currentFragment;
|
||||
return listener.onBackPressed();
|
||||
}
|
||||
catch (ClassCastException e)
|
||||
{
|
||||
Logger logger = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC);
|
||||
String tag = this.getClass().getSimpleName();
|
||||
logger.i(tag, "Fragment '" + currentFragment + "' doesn't handle back press by itself.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue