S
skm
Neues Mitglied
- 0
Hey,
ich arbeite gerade an einer Spiele-App, welche auch schon zu einem großen Teil fertig ist, allerdings habe ich ein Problem damit Daten per
Intent zwischen zwei Activities zu tauschen. Folgende Situation:
In der MainActivity enthält im Grunde das Hauptmenü, wo es für jedes zur Verfügung stehende Level einen Button mit Vorschaubild gibt.
Klickt man auf einen dieser Button wird das zugehörige Level gestartet und es wird zur GameActivity gewechselt. Gleichzeitig wird per Intent
die ID des Lebels an die GameActivity übergeben.
Die GameActivity kümmert sich dann um die Darstellung der Level-Oberfläche und benachrichtigt andere Klassen, die die Spiellogik enthalten.
Bei der GameActivity gibt es einen einzigen Button, mit dem man wieder zurück zum Menü kommt (= Wechsel zur MainActivity).
Gleichzeitig soll hier wiederum per Intent ein Wert übergeben werden (der Highscore), aber dies klappt nicht.
Kurz zusammengefasst:
MainActivity-------->LevelID------->GameActivitiy: Funktioniert
MainActivity<--------Highscore<-----GameActivity: Funktioniert nicht
Hier die Wichtigsten Auszüge aus dem Code:
MainActivity - LevelId an GameActivtiy:
GameActivity - LevelId von MainActivity entgegennehmen:
Funktioniert
GameActivity - Highscore an MainActivtiy:
MainActivity - Highscore von GameActivity entgegennehmen:
Funktioniert nicht!
Wie man sehen kann ist der Code vom Prinzip her identisch, nur einmal
funktioniert die Wertübergabe, in die andere Richtung funktioniert er nicht.
Hab schon ziemlich viel rumprobiert, es aber bislang nicht hinbekommen.
Auch mit startActivityForResult(), wie hier beschrieben (What is Intent in android? | vimviv.com knowledge base) klappt es nicht.
Weiß jemand Rat? Wäre sehr dankbar.
Edit:
Mir ist aufgefallen, dass auch die Rückrichtung (GameActivtiy -> MainActivity) funktioniert, sobald ich die MainActivity nach dem Wechsel zur GameActivity schließe (finish() nach startActivity(intent)).
Gibt es auch eine Lösung, ohne dass die MainActivity geschlossen werden muss?
ich arbeite gerade an einer Spiele-App, welche auch schon zu einem großen Teil fertig ist, allerdings habe ich ein Problem damit Daten per
Intent zwischen zwei Activities zu tauschen. Folgende Situation:
In der MainActivity enthält im Grunde das Hauptmenü, wo es für jedes zur Verfügung stehende Level einen Button mit Vorschaubild gibt.
Klickt man auf einen dieser Button wird das zugehörige Level gestartet und es wird zur GameActivity gewechselt. Gleichzeitig wird per Intent
die ID des Lebels an die GameActivity übergeben.
Die GameActivity kümmert sich dann um die Darstellung der Level-Oberfläche und benachrichtigt andere Klassen, die die Spiellogik enthalten.
Bei der GameActivity gibt es einen einzigen Button, mit dem man wieder zurück zum Menü kommt (= Wechsel zur MainActivity).
Gleichzeitig soll hier wiederum per Intent ein Wert übergeben werden (der Highscore), aber dies klappt nicht.
Kurz zusammengefasst:
MainActivity-------->LevelID------->GameActivitiy: Funktioniert
MainActivity<--------Highscore<-----GameActivity: Funktioniert nicht
Hier die Wichtigsten Auszüge aus dem Code:
MainActivity - LevelId an GameActivtiy:
PHP:
levelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), com.example.game.applogic.GameActivity.class);
intent.putExtra("levelId", level);
startActivity(intent);
}
});
PHP:
int currentLevel = getIntent().getIntExtra("levelId", 0);
GameActivity - Highscore an MainActivtiy:
PHP:
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), com.example.game.applogic.MainActivity.class);
intent.putExtra("highscore", highscore);
startActivity(intent);
}
PHP:
@Override
public void onResume() {
super.onResume();
int highscore = getIntent().getIntExtra("highscore", 0);
}
Wie man sehen kann ist der Code vom Prinzip her identisch, nur einmal
funktioniert die Wertübergabe, in die andere Richtung funktioniert er nicht.
Hab schon ziemlich viel rumprobiert, es aber bislang nicht hinbekommen.
Auch mit startActivityForResult(), wie hier beschrieben (What is Intent in android? | vimviv.com knowledge base) klappt es nicht.
Weiß jemand Rat? Wäre sehr dankbar.

Edit:
Mir ist aufgefallen, dass auch die Rückrichtung (GameActivtiy -> MainActivity) funktioniert, sobald ich die MainActivity nach dem Wechsel zur GameActivity schließe (finish() nach startActivity(intent)).
Gibt es auch eine Lösung, ohne dass die MainActivity geschlossen werden muss?
Zuletzt bearbeitet: