A
afroasiate
Neues Mitglied
- 1
Hallo an alle,
ich beschäftige mich seit dieser Woche mit der Programmierung von Android Apps und habe mir vorgenommen eine Spiel "Schiffe versenken" zu programmieren.
Seit gestern Abend hänge ich an einem Problem, bei dem ich nicht weiter weiss.
Ich habe in der Activity1 ein Objekt erzeugt, welches ich auch in der Activity2 brauche, jetzt habe ich raus gefunden das man mit Intent.putExtras() das wohl irgendwie hinbekommen kann. Jetzt erscheint mir dieser Weg zu kompliziert, deshalb wollte ich fragen ob es einen anderen Weg gibt.
In dem Objekt befinden sich Methoden wie z.B. anzahlDerZuege oder setSchuss etc.
Je nachdem wie ich das Spiel erweitere brauche ich später die Instanz auch noch in anderen Activity3 und Activity4.
Im Dev Guide von Android habe ich einen Hinweis gefunden, der mir helfen könnte. Leider habe ich noch nicht verstanden wie ich das genau machen kann:
Mein Code schaut im Moment verkürzt (vereinfacht) ungefähr so aus, ich habe schon mit einem public static Aufruf rumprobiert komme aber nicht weiter.
Kurz ausgedrückt: In der Activity spielen will ich auf das Objekt game aus der Activity SchiffeVersenken zugreifen, möglichst einfach.
und
Schon mal danke für eure Hilfen.
cu
afro
ich beschäftige mich seit dieser Woche mit der Programmierung von Android Apps und habe mir vorgenommen eine Spiel "Schiffe versenken" zu programmieren.
Seit gestern Abend hänge ich an einem Problem, bei dem ich nicht weiter weiss.
Ich habe in der Activity1 ein Objekt erzeugt, welches ich auch in der Activity2 brauche, jetzt habe ich raus gefunden das man mit Intent.putExtras() das wohl irgendwie hinbekommen kann. Jetzt erscheint mir dieser Weg zu kompliziert, deshalb wollte ich fragen ob es einen anderen Weg gibt.
In dem Objekt befinden sich Methoden wie z.B. anzahlDerZuege oder setSchuss etc.
Je nachdem wie ich das Spiel erweitere brauche ich später die Instanz auch noch in anderen Activity3 und Activity4.
Im Dev Guide von Android habe ich einen Hinweis gefunden, der mir helfen könnte. Leider habe ich noch nicht verstanden wie ich das genau machen kann:
A public static field/method
An alternate way to make data accessible across Activities/Services is to use public static fields and/or methods. You can access these static fields from any other class in your application. To share an object, the activity which creates your object sets a static field to point to this object and any other activity that wants to use this object just accesses this static field.
Mein Code schaut im Moment verkürzt (vereinfacht) ungefähr so aus, ich habe schon mit einem public static Aufruf rumprobiert komme aber nicht weiter.
Kurz ausgedrückt: In der Activity spielen will ich auf das Objekt game aus der Activity SchiffeVersenken zugreifen, möglichst einfach.
Code:
public class SchiffeVersenken extends Activity implements OnClickListener {
Button start;
ImageButton zelle00;
public static Game game = new Game();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
zelle00 = (ImageButton)this.findViewById(R.id.zelle00);
zelle00.setOnClickListener(this);
start = (Button)this.findViewById(R.id.start);
start.setOnClickListener(this);
}
public void onClick(View v) {
if (v == start ) {
//Los Gehts!!
Intent myIntent = new Intent(v.getContext(), Spielen.class);
// myIntent.putExtra("ObjektString",stringObjektGame);
startActivityForResult(myIntent, 0);
}
if (v == zelle00 ) {
if(game.getFeldwert(0,0) == 1){
zelle00.setImageResource(R.drawable.leer);
game.setFeldwert(0,0,0);
}
else if(game.getFeldwert(0,0) == 0){
zelle00.setImageResource(R.drawable.schiffklein);
game.setFeldwert(0,0,1);
}
}
und
Code:
public class Spielen extends Activity implements OnClickListener {
Button treffer;
Button zurueck;
ImageButton zelle00;
ImageButton zelle10;
TextView status;
TextView status1;
//Integer[][] schiffe;
//Game game = new Game();
Game game;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spielen);
zelle00 = (ImageButton)this.findViewById(R.id.zelle00);
zelle00.setOnClickListener(this);
}
public void onClick(View v) {
if (v == zelle00 ) {
if(game.setSchuss(0,0) == 0){
zelle00.setImageResource(R.drawable.leer);
}
else if(game.setSchuss(0,0) == 1){
zelle00.setImageResource(R.drawable.schiffklein);
}
}
}
Schon mal danke für eure Hilfen.
cu
afro