properly catch and ignore IllegalStateException instead of using commitAllowStateLoss

This commit is contained in:
Daniel Gultsch 2018-04-25 14:41:02 +02:00
parent 2d7e5a12aa
commit 09276eb396
1 changed files with 13 additions and 2 deletions

View File

@ -424,7 +424,13 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_fragment, conversationFragment); fragmentTransaction.replace(R.id.main_fragment, conversationFragment);
fragmentTransaction.addToBackStack(null); fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss(); //allowing state loss is probably fine since view intents et all are already stored and a click can probably be 'ignored' try {
fragmentTransaction.commit();
} catch (IllegalStateException e) {
Log.w(Config.LOGTAG,"sate loss while opening conversation",e);
//allowing state loss is probably fine since view intents et all are already stored and a click can probably be 'ignored'
return;
}
} }
} else { } else {
mainNeedsRefresh = true; mainNeedsRefresh = true;
@ -563,7 +569,12 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
} }
Fragment mainFragment = getFragmentManager().findFragmentById(R.id.main_fragment); Fragment mainFragment = getFragmentManager().findFragmentById(R.id.main_fragment);
if (mainFragment != null && mainFragment instanceof ConversationFragment) { if (mainFragment != null && mainFragment instanceof ConversationFragment) {
try {
getFragmentManager().popBackStack(); getFragmentManager().popBackStack();
} catch (IllegalStateException e) {
Log.w(Config.LOGTAG,"state loss while popping back state after archiving conversation",e);
//this usually means activity is no longer active; meaning on the next open we will run through this again
}
return; return;
} }
Fragment secondaryFragment = getFragmentManager().findFragmentById(R.id.secondary_fragment); Fragment secondaryFragment = getFragmentManager().findFragmentById(R.id.secondary_fragment);