Zmienne pomiędzy głównymi klasami (Java/LibGDX)

0

Witam Wszystkich! Potrzebuję pomocy dotyczącej problemów ze zmiennymi globalnymi.
Mam 3 klasy - Core.java, MainScreen.java oraz Settings.java.
Core - klasa posiadająca zadeklarowane zmienne publiczne globalne
MainScreen - główny ekran
Settings - ekran, na który chcę przejść z MainScreen.

Część kodu Core odpowiedzialna za zmienne i zmianę pomiędzy ekranami:

public String menuID = "MainMenu";
public void setMenuID(String strmnid){
	this.menuID = strmnid;
}
(...)
switch(this.menuID){
	case("Settings"):
		setScreen(new Settings());
		break;
	case("MainMenu"):
		setScreen(new MainScreen());
		break;
	case("ExitApp"):
		Gdx.app.exit();
	default:
		Gdx.app.log(LOG, "Default");
	break;
}

Problem pojawia się w klasie MainScreen:

if(Gdx.input.isKeyPressed(Keys.ESCAPE)){
	core.setMenuID("Settings");
}

Gdy w podklasie MainScreen ustawiam zmienną menuID na "Settings", to w klasie Core nadal pozostaje ona jako menuID = "MainMenu". Nie mogę zmienić żadnej zmiennej z klasy Core, mimo tego, że wszystko jest ustawione jako publiczne. Klasa Core musi odpowiadać za zmianę ekranów, a w poszczególnych ekranach, musi być zmiana - czyli poprzez kliknięcie danego klawisza, w klasie Core, menuID powinno się zmieniać na inny ekran.

Proszę o szybką pomoc, jeżeli macie jakieś pytania, proszę piszcie, bardzo zależy mi na naprawieniu tego błędu.

0

Pierwsza hipoteza: masz dwa obiekty klasy Core, w jednym obiekcie zmieniasz wartość pola menuID, z drugiego obiektu korzystasz w kodzie switch(this.menuID).

0

Jedyny obiekt, który zadeklarowałem jest Core core = new Core() w klasie MainScreen.
W dodatku podczas pisania LOG'a, rozumiem, że tak jakby zmienia mi się menuID ale tylko tymczasowo...

Podczas wywołania gdy TRZYMAM KLAWISZ:
core.setMenuID("Settings");
w klasie MainScreen.java oraz podczas wywołania:
public void setMenuID(String strmnid){
	Gdx.app.log(LOG, "Test");
	this.menuID = strmnid;
	Gdx.app.log(LOG, ""+menuID);
}
(...)
Gdx.app.log(LOG, ""+menuID);
w klasie Core.java

W konsoli wypisuje mi:
MainScreen
MainScreen
MainScreen

  • Przytrymuje klawisz
    Test
    Settings
    MainScreen
    Test
    Settings
    MainScreen
  • Puszczam
    MainScreen
    MainScreen (...)

Wygląda to moim zdaniem, na skopiowanie się zmiennych, ale deklaruję ją tylko raz oraz jedyna deklaracja Core core = new Core() jest tylko w MainScreen. :/
Coś mi nie pasuje >_<

1 użytkowników online, w tym zalogowanych: 0, gości: 1