Button drücken und zurück geht jedoch nicht ein zweites mal.

  • 8 Antworten
  • Letztes Antwortdatum
Y

Y3nnick

Neues Mitglied
0
Wenn ich auf einen der drei Buttons Klicke komme ich in eines der anderen Layouts und wenn ich den zurück Button (der neben dem Handy HomeButton) drücke komme ich zurück in Hauptmenü.
Soweit so gut. Jedoch wenn ich noch einmal einer der Buttons drücke, reagieren diese nicht mehr und es passiert nichts.
Kann mir jemand sagen was ich an meiner Programmierung ändern muss?
Vielen Dank

Code:
public class MainActivity extends Activity {

    Button mybuttonstarten;
    Button mybuttonrekorde;
    Button mybuttonoptionen;
    
    boolean mainisopen = true;   
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        setContentView(R.layout.activity_main);
                         	
		
	mybuttonstarten = (Button) this.findViewById(R.id.buttonstarten);
    mybuttonrekorde = (Button) this.findViewById(R.id.buttonrekorde);
    mybuttonoptionen = (Button) this.findViewById(R.id.buttonoptionen);
    
    mybuttonstarten.setOnClickListener(new View.OnClickListener() {
    	
			public void onClick(View v) {
				setContentView(R.layout.ingame);
				mainisopen = false;				
				// TODO Auto-generated method stub
				/*Intent intent = new Intent(MainActivity.this, Ingame.class);
				startActivity(intent);*/
				//Toast.makeText("TOAST", Toast.LENGTH_LONG).show();
			}
			
		
		});
    mybuttonrekorde.setOnClickListener(new View.OnClickListener() {
    	
			public void onClick(View v) {
				setContentView(R.layout.rekorde);
				mainisopen = false;
				// TODO Auto-generated method stub
				/*Intent intent = new Intent(MainActivity.this, Ingame.class);
				startActivity(intent);*/
				//Toast.makeText("TOAST", Toast.LENGTH_LONG).show();
			}
			
    });

		mybuttonoptionen.setOnClickListener(new View.OnClickListener() {
	
			public void onClick(View v) {
				setContentView(R.layout.optionen);
				mainisopen = false;
				// TODO Auto-generated method stub
				/*Intent intent = new Intent(MainActivity.this, Ingame.class);
				startActivity(intent);*/
				//Toast.makeText("TOAST", Toast.LENGTH_LONG).show();
			}
					
	
	});
	}
	
	 
	
        
        
	@Override //Hier kommt der Code um zurück zum Hauptmenü zu gelangen
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    	if (keyCode == KeyEvent.KEYCODE_BACK && mainisopen == false) {
    		mainisopen = true;
    		setContentView(R.layout.activity_main);
    		return true;
    	}
    	return super.onKeyDown(keyCode, event);
	}
}
 
Versuch es mal mit MenuIds und Backkeyaction.

Code:
private static enum BackKeyAction {QUIT, MAIN_MENU, AUFNAHMEN, AUFNAHME_THEN_AUFNAHMEN, AUFNAHME};	
		private BackKeyAction backKeyAction;
		private int menuId;

Verteil jeder Activity eine menuid und zu guter Letzt.:


Code:
        @Override
	        public boolean onKeyDown(int keyCode, KeyEvent event) 
	        {
	        	if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
	        	{
	        		if(backKeyAction == BackKeyAction.QUIT) 
	        		{
	        			quit();
	        		}
	        		if(backKeyAction == BackKeyAction.MAIN_MENU) 
	        		{
	        			setMainView();
	        		}
	        		if(backKeyAction == BackKeyAction.WIEGUNGEN) 
	        		{	        		      				        	
	        			setAufnahmenView();
	        		}  		
	        		return true;
	        	}
	        	return super.onKeyDown(keyCode, event);
	        }   
	        @Override
	        public boolean onPrepareOptionsMenu(Menu menu) 
	        {
	        	if(menuId == 0) 
	        	{
	        		return false;
	        	}
	        	menu.clear();
	        	MenuInflater inflater = new MenuInflater(this);
	        	inflater.inflate(menuId, menu);
	        	return true;
	        }


So oder so ähnlich löse ich solche Sachen.
 
Warum überschreibst du die onKeyDown()
Wenn du, ohne sie zu überschreiben, zurück drückst, solltes du doch auch auf dein "Main-Layout" zurück kommen...?!

Gruß
 
nein, weil er vor dem öffnen der neuen activity setContentView aufruft

lösch das mal weg, das brauchst da nicht.
 
Er startet keine neue Activity. Das ist doch auskommentiert.
Er setzt also pro click nur ein neuen content ...
 
ah auskommentiert. hatte ich nicht gesehen.

dann sollte er es wieder einkommentieren :D

Der ursprüngliche Beitrag von 10:11 Uhr wurde um 10:12 Uhr ergänzt:

oder halt beim zurücksetzen die ganzen clicklistener wieder setzen
 
Wenn er es wieder einkommentiert, dann wird wieder die selbe acitvity gestartet mit dem main layout und nichts würde sich ändern. Also er hat wieder das Main-Layout und es wird immer nur der selbe screen angezeigt.

Ich würde das ganze anders lösen:
Mach ein master-xml.
Dort gibst du via <include> alle anderen xml ein. Im code kannst du dann die einzelnen xmls via setVisibility() ein- bzw ausblenden...

Gruß
 
check ich nicht

wenn er den code ausführen lässt, startet er doch eine weitere activity. was die tut ist ja egal.
wenn er dann zurück klickt, ist er wieder da wo er war und kann alles ganz normal benutzen. (solange er das setcontentview weglässt)

so hat er dann schön 2 activities und kann hin und her wechseln
 
Ach jetzt war ich verwirrt :)
Ignorier alles was ich geschrieben habe xD

Hatte gedacht in der MainActivity startet er die MainActivity :O
Dem ist ja nicht so...

Gruß
 
Zurück
Oben Unten