Warum funktionieren meine Buttons nicht?

  • 5 Antworten
  • Letztes Antwortdatum
Y

Y3nnick

Neues Mitglied
0
Was muss ich ändern damit es mir das Layout und die Klasse ändert.

Vielen Dank für eure Hilfe.

Code:
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

   
   private Button mybuttonstarten;
   private Button mybuttonrekorde;
   private Button mybuttonoptionen;
   
    	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        setContentView(R.layout.activity_main);
                             
    
   
   
   
   
   
    
    Button mybuttonstarten = (Button) findViewById(R.id.buttonstarten);
    mybuttonstarten.setOnClickListener(this);
    Button mybuttonrekorde = (Button) findViewById(R.id.buttonrekorde);
    mybuttonrekorde.setOnClickListener(this);
    Button mybuttonoptionen = (Button) findViewById(R.id.buttonoptionen);
    mybuttonoptionen.setOnClickListener(this);
 
    
    }
 


	public void onClick(View v) {
		if(v==mybuttonstarten) {
	   		
	   		setContentView(R.layout.ingame);
	       	
	       	Intent istart = new Intent (MainActivity.this,Ingame.class);
	       	startActivity(istart);
	       	Log.i("activity_main", "ingame");
	       	
	   	}
	   	if(v==mybuttonrekorde) {
	   		
	   		setContentView(R.layout.rekorde);
	       	
	       	Intent irekorde = new Intent (MainActivity.this,Rekorde.class);
	       	startActivity(irekorde);
	       	Log.i("activity_main", "rekorde");
	       	
	   	}
	   	
	   	if(v==mybuttonoptionen) {
	   		
	   		setContentView(R.layout.optionen);
	      	
	       	Intent ioptionen = new Intent (MainActivity.this,Optionen.class);
	       	startActivity(ioptionen);
	       	Log.i("activity_main", "optionen");
	       	
	    }
		
	}}
 
Statt den vielen if-statements würde ich eher eine switch-Anweisung benutzen. Und zwar wie folgt:

PHP:
switch(v.getId()){
    case R.id.buttonstarten:
           // code hierher
           break;

    case R.id.blabla:
          // code hier
          break;

    // etc.
}
 
Hab es jetzt mal so gemacht.
Wenn ich nun auf meinem Galaxy ausprobiere und einen Button drücke, hängt das Programm, dann zoomt das Programm an die linke unter Ecke (Finde ich ganz komisch) und zum Schluss kommt die Fehlermeldung: Programm angehalten.
Was mache ich falsch?

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button mybuttonstarten= (Button) findViewById(R.id.buttonstarten);
mybuttonstarten.setOnClickListener(this);
Button mybuttonrekorde = (Button) findViewById(R.id.buttonrekorde);
mybuttonrekorde.setOnClickListener(this);
Button mybuttonoptionen = (Button) findViewById(R.id.buttonoptionen);
mybuttonoptionen.setOnClickListener(this);


}



public void onClick(View v) {
switch(v.getId()) {

case R.id.buttonstarten:

Intent istart = new Intent (MainActivity.this,Ingame.class);
startActivity(istart);
Log.i("activity_main", "ingame");
break;

case R.id.buttonrekorde:

Intent irekorde = new Intent (MainActivity.this,Rekorde.class);
startActivity(irekorde);
Log.i("activity_main", "rekorde");
break;

case R.id.buttonoptionen:

Intent ioptionen = new Intent (MainActivity.this,Optionen.class);
startActivity(ioptionen);
Log.i("activity_main", "optionen");
break;

}

}}


So sage ich meinen Buttons:
Was mir aufgefallen ist ich verwende nirgends mehr buttonstartenonclick, da es eine Fehlermeldung ausgibt, wenn ich das statt buttonstarten schreibe.
Muss ich das irgendiwie einbauen?
Wenn ja, wie?

<Button
android:id="@+id/buttonstarten"
android:layout_width="250dp"
android:layout_height="68dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:padding="4dp"
android:text="@string/start"
android:textSize="40sp"
android:onClick="buttonstartenclick" />

Danke für ihre Hilfe.
 
Aus deiner XML kannst du "android:onClick="buttonstartenclick"" entfernen - das ist nicht notwendig, wenn du das per Java-Code machst.
 
aber dann gehen die Buttons gar nicht mehr. Reagieren nicht einmal mehr
 
Dann zeig deinen kompletten Code. Habe fix deinen Code genommen und nahcgestellt, funktioniert perfekt - siehe Anhang
 

Anhänge

  • bb.png
    bb.png
    81,1 KB · Aufrufe: 301
Zurück
Oben Unten