Merge branch 'master' into 'master'

[Mobile] Crash Fix on Loading New Game

Closes #2046

See merge request core-developers/forge!6043
This commit is contained in:
Anthony Calosa
2022-01-14 05:59:23 +00:00
2 changed files with 11 additions and 8 deletions

View File

@@ -44,7 +44,7 @@ public class LoadGameMenu extends FPopupMenu {
private void initializeScreen() { private void initializeScreen() {
if (screen == null) { //don't initialize screen until it's opened the first time if (screen == null) { //don't initialize screen until it's opened the first time
try { try {
screen = screenClass.newInstance(); screen = screenClass.getConstructor().newInstance();
screen.setHeaderCaption(Localizer.getInstance().getMessage("lblLoadGame") + " - " + item.getText()); screen.setHeaderCaption(Localizer.getInstance().getMessage("lblLoadGame") + " - " + item.getText());
} }
catch (Exception e) { catch (Exception e) {
@@ -59,7 +59,8 @@ public class LoadGameMenu extends FPopupMenu {
} }
private void open(boolean replaceBackScreen) { private void open(boolean replaceBackScreen) {
initializeScreen(); initializeScreen();
Forge.openScreen(screen, replaceBackScreen); if (screen != null)
Forge.openScreen(screen, replaceBackScreen);
} }
public void setAsBackScreen(boolean replace) { public void setAsBackScreen(boolean replace) {

View File

@@ -50,7 +50,7 @@ public class NewGameMenu extends FPopupMenu {
private void initializeScreen() { private void initializeScreen() {
if (screen == null) { //don't initialize screen until it's opened the first time if (screen == null) { //don't initialize screen until it's opened the first time
try { try {
screen = screenClass.newInstance(); screen = screenClass.getConstructor().newInstance();
screen.setHeaderCaption(localizer.getMessageorUseDefault("lblNewGame", "New Game") + " - " + item.getText()); screen.setHeaderCaption(localizer.getMessageorUseDefault("lblNewGame", "New Game") + " - " + item.getText());
} }
catch (Exception e) { catch (Exception e) {
@@ -65,7 +65,8 @@ public class NewGameMenu extends FPopupMenu {
} }
private void open(boolean replaceBackScreen) { private void open(boolean replaceBackScreen) {
initializeScreen(); initializeScreen();
Forge.openScreen(screen, replaceBackScreen); if (screen != null)
Forge.openScreen(screen, replaceBackScreen);
} }
public void setAsBackScreen(boolean replace) { public void setAsBackScreen(boolean replace) {
@@ -83,10 +84,11 @@ public class NewGameMenu extends FPopupMenu {
preferredScreen = NewGameScreen.valueOf(prefs.getPref(FPref.NEW_GAME_SCREEN)); preferredScreen = NewGameScreen.valueOf(prefs.getPref(FPref.NEW_GAME_SCREEN));
} }
catch (Exception ex) { catch (Exception ex) {
ex.printStackTrace(); if (NewGameScreen.Constructed != null) { //if this is null it means newgamescreen is not initialized
preferredScreen = NewGameScreen.Constructed; preferredScreen = NewGameScreen.Constructed;
prefs.setPref(FPref.NEW_GAME_SCREEN, preferredScreen.name()); prefs.setPref(FPref.NEW_GAME_SCREEN, preferredScreen.name());
prefs.save(); prefs.save();
}
} }
} }