Problem mit funktion meiner buttons

  • 6 Antworten
  • Letztes Antwortdatum
U

UchihaSevenfold

Neues Mitglied
0
Guten Tag,

ich bräuchte mal eure hilfe :-/

ich versuch mich kurz zu halten. Ich schreib eine Spiele app und in dieser App können die nutzer sich ihre Charaktere aussuchen. Im Anhang seht ihr ein bild wie das das ganze bisher aussieht !

Am Anfang sieht jeder spieler nur diesen Totenkopf und wenn die spieler nach links klicken wechselt das Bild zum hai !! Nun hab ich folgendes Problem:

Wenn ich zum beispiel bei spieler1 zum Hai wechsel und dann bei Spieler2 AUCH zum hai wechseln möchte , wechselt der das bild beim Spieler1 wieder zum totenkopf und andersrum genauso. also irgendwie versetzt der das bild beim jeweils anderen wieder in den anfangszustand. ich hoffe das man das verstehen kann :-/.

Liegt es vll am switch case oder so das der Zustand, das ich nen bild gewechselt habe sich wieder zurueck setzt sobald ich irgendeinen anderen Button gedrueckt habe ???

Die Buttons um die es sich handelt damit ihr schneller zurecht kommt sind die im switch case ! Spieler1Links is z.B. der pfeil nach links vom 1 spieler ( links) usw. ich habe es auch im code markiert!!!

bitttttte helft mir !!:sad:

Code:
public class MainActivity extends ActionBarActivity implements OnClickListener {
	
	
	private Button play;
	private Button spieler1links;
	private Button spieler1rechts;
	private Button spieler2links;
	private Button spieler2rechts;
	private ImageView hai;
	private ImageView schaedel;
	private ImageView hai2;
	private ImageView schaedel2;
	private boolean dialogIsActive;
        private CheckBox redLeft;
	private CheckBox blueleft;
	private CheckBox redRight;
	private CheckBox blueRight;
	
	
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(this);  
        
        quitAll = (Button)findViewById(R.id.btnQuit);
        quitAll.setOnClickListener(this);
		
	rules = (Button)findViewById(R.id.btnrules);
	rules.setOnClickListener(this);
       
        mpbackground = MediaPlayer.create(this,R.raw.lied);
  	mpbackground.setLooping(true);
        
       initialize();
		
				
	}
   
	private void initialize() {
		
		quit = (Button) pausedialog.findViewById(R.id.quit);
		quit.setOnClickListener(this);
		
			
		resume = (Button) pausedialog.findViewById(R.id.btnResume);
		resume.setOnClickListener(this);
		
	        sound = (ToggleButton)pausedialog.findViewById(R.id.btnSound);

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    
    @Override
	public void onClick(View v) {
		
      setContentView(R.layout.spielerauswahl);
      playBackgroundSound();
		
	 // Ab hier fangen die 4 Buttons an mit denen ich umschalte
		
	    spieler1links = (Button)findViewById(R.id.links1);
	    spieler1links.setOnClickListener(this);
	    
	    spieler1rechts = (Button)findViewById(R.id.rechts1);
	    spieler1rechts.setOnClickListener(this);
	    
	    spieler2links = (Button)findViewById(R.id.links2);
	    spieler2links.setOnClickListener(this);
	    
	    spieler2rechts = (Button)findViewById(R.id.rechts2);
	    spieler2rechts.setOnClickListener(this);
	    
	    redLeft = (CheckBox)findViewById(R.id.leftRedTeam);
	    blueleft = (CheckBox)findViewById(R.id.leftTeam);
	   
	    redRight = (CheckBox)findViewById(R.id.rightRedTeam);
	    blueRight = (CheckBox)findViewById(R.id.rightBlueTeam);
	    
	    play = (Button)findViewById(R.id.spiel);
	    play.setOnClickListener(this);
	    

		
	    switch (v.getId()){
	    case 	R.id.links1:
		
		    hai = (ImageView) findViewById(R.id.shark);
		    hai.setVisibility(View.VISIBLE);
			
	            schaedel = ( ImageView) findViewById(R.id.skull);
		    schaedel.setVisibility(View.INVISIBLE);
			
		    redLeft.setVisibility(View.VISIBLE);
		    blueleft.setVisibility(View.INVISIBLE);
			
			
			break;
			
			
		case R.id.rechts1:
			
		    hai = (ImageView) findViewById(R.id.skull);
		    hai.setVisibility(View.VISIBLE);
			
		    schaedel = ( ImageView) findViewById(R.id.shark);
		    schaedel.setVisibility(View.INVISIBLE);
			
		    redLeft.setVisibility(View.INVISIBLE);
		    blueleft.setVisibility(View.VISIBLE);
			
			break;
		case 	R.id.links2:
			
		    hai2 = (ImageView) findViewById(R.id.imageView1);
		    hai2.setVisibility(View.VISIBLE);
			
		    schaedel2 = ( ImageView) findViewById(R.id.imageView2);
		    schaedel2.setVisibility(View.INVISIBLE);
			
	            redRight.setVisibility(View.VISIBLE);
		    blueRight.setVisibility(View.INVISIBLE);
			
			break;
			
			
		case R.id.rechts2:
			
		    hai2 = (ImageView) findViewById(R.id.imageView2);
		    hai2.setVisibility(View.VISIBLE);
			
		    schaedel2 = ( ImageView) findViewById(R.id.imageView1);
		    schaedel2.setVisibility(View.INVISIBLE);
			
		     redRight.setVisibility(View.INVISIBLE);
		     blueRight.setVisibility(View.VISIBLE);
			
		     break;
 
Zuletzt bearbeitet:
hier n0ch schnell das Bild!!! habs vergessen sry !!
 

Anhänge

  • hkkjhk.JPG
    hkkjhk.JPG
    2,9 KB · Aufrufe: 235
Eigentlich dürften die Buttons gar nicht funktionieren, es sei denn du hast denen im Layout schon den OnClickListener zugewiesen.
Warum werden die Buttons erst in der onClick definiert?

Und ich würde die imageViews irgendwo ausserhalb der onClick methode dauerhaft zuordnen.
Du machst da ja ganz verwirrendes zeug.
einmal hai = .... id.shark
und beim anderen button dann
hai. ... id.skull

Ist das nicht total verwirrend?
Wenn du da in 3 Wochen nochmal drauf guckst findest du dich selbsr nicht mehr zurecht (glaub mir ich arbeite seit 9 Jahren beruflich als Softwareentwickler, man versteht nach einer Woche seinen eigenen Code nicht mehr ;))

Aber auf Anhieb seh ich nicht warum sich das andere Bild auch ändert
 
  • Danke
Reaktionen: UchihaSevenfold
Alles was amfa anführt kann ich nur beipflichten. Der Code, den du hier veröffentlicht hast, dürften in Eclipse oder Android Studio als apk nicht gebaut werden. Er ist nicht lauffähig. Es fehlt eine ganze Ecke. Zum Beispiel wird das Feld mpbackground nicht deklariert. (Gleiches gilt für quitAll, rules, resume, quit usw.)

Ich gehe mal davon aus, dass das hier nicht der komplette Code ist. Was erst mal nicht schlecht ist. Aber in dieser Form (mit den zusätzlichen eingebauten Bugs) kann man nur noch raten, was hier falsch läuft.
 
  • Danke
Reaktionen: UchihaSevenfold
Hey danke erstmal fuer deine antwort !!!

das mit dem was du so verwirrend fandest hab ich eh schon geändert und verbessert =)

ehm nein eigentlich hab ich den Listener nicht im Layout zugewiesen 0.o

ich verstehs nicht ich dachte echt es liegt am swich case. aber nun hab ich es mit

Code:
  if (v.getId()== R.id.links1){
	    	
	    	skull.setImageResource(R.drawable.hai);
	    }
		
	    else if (v.getId()==R.id.rechts1){
	    	
	    	
	    	skull.setImageResource(R.drawable.punk);
	    }

usw probiert da hab ich genau das selbe Problem :(. und ich hab noch 1000 mal geschaut...haette ja sein können das ich die ID`s durcheinander gewrfen habe aber hab ich auch nich =(
 
Du rufst zweimal die Methode setContentView() auf. Normalerweise hat jede Activity nur ein Rootview. Wenn du nachträglich Views einfügen möchtest, benutzt man am besten die Klasse LayoutInflater. LayoutInflater | Android Developers
 
  • Danke
Reaktionen: UchihaSevenfold
oh das wusste ich noch nicht!:unsure: ich bin ja auch noch relativ neu was java und andr0id angeht :-/ das mit dem layoutinflater werde ich dann noch umsetzen !! und ja sie haben rech ich habe Code weg gelassen eben. aber eig nur unwichtigen Code.

Ich würde die ganzen Buttons und die Imageviews gerne wo anders deklarieren das Problem is ich erweiter auch nur schon von einem freund vorhandenen Code. meine aufgabe war es nun die spielerauswahl mit hineinzu bringen und wenn ich die ganzen Buttons v0n mir woanders deklarieren möchte stürzt die app beim Test direkt ab :sad::sad::sad:

wo könnte ich die denn deklarieren ?? ich habe es schon an mehreren stellen versucht =(



edit: das Programm stuerzt ab weil ich die Buttons VOR dem setContentView(R.layout.spielerauswahl) deklarieren würde denke ich mal. ich denke ich muesste weiter oben im code das Layout spielerauwahl irgendwo erst einmal deklarieren und dann könnte ich die Buttons auch aus der 0nClick() methode auslagern. könntest du mir verraten wie ich das mache ?
 
Zuletzt bearbeitet:
Zurück
Oben Unten