Dialog an der flaschen stelle

U

UchihaSevenfold

Neues Mitglied
0
hallooo liebe leute,

edit: "dialog an der falschen stelle" soll die überschrift lauten! sry !!

Ich habe vor ein paar wochen schon einen Dialog in meine app eingebaut der im Spiel als pausemenue dient. Zuerst war auch alles gut er erschien IM SPIEL also da wo er hingehört !

aber nachdem ich zwischen STARTmenue und dem Spiel noch ein Intent "Spielerauswahl" gepackt habe erscheint der "Pausedialog nur noch im Startmenue und nich mehr im spiel !! =(

Ich hab echt schon so viel ausprobier und versucht aber alles war fuer die katz und ich schaff es einfach nich den dialog wieder ins spiel zu bekommen. kann mir bitte bitte bitte jemand helfen ????

hier die 1 klasse (gekürzt):

Code:
public class MainActivity extends ActionBarActivity implements OnClickListener {
	
	private MediaPlayer mpbackground;
	private Dialog pausedialog;
	private Button resume;
	private Button quit;
	private ToggleButton sound;
	private Button play;
        private boolean dialogIsActive;
 
	

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(this);  
        
        rules = (Button)findViewById(R.id.btnrules);
	rules.setOnClickListener(this);
	    
	    mpbackground = MediaPlayer.create(this,R.raw.lied);
  	    mpbackground.setLooping(true);
       
// Pausedialog
  	    pausedialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
		pausedialog.setContentView(R.layout.pausescreen);
		pausedialog.hide(); 
		

	    
	    initialize();
		
				
	}
   
	private void initialize() {
		// Buttons im Pausedialog 
		
		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);
		sound.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
				
				
	if (!isChecked){
					
		try {
			mpbackground.prepare();
		}catch (IllegalStateException e) {
					e.printStackTrace();
						
		} catch (IOException e) {
			e.printStackTrace();
		}
				
		    mpbackground.start();
				       
		}else
		{
		    mpbackground.stop();
		}
			
				
			}
		
		});};
		
		
	@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) {
		
		   
   switch (v.getId()){
	   
	    case   R.id.button1:
	    	
	    	Intent intent = new Intent (MainActivity.this,SpielerActivity.class);
	    	startActivity(intent);
	    	
	    	playBackgroundSound();
	    	
	 			
	 			break;
	    
	   case   R.id.btnResume:
			
			pausedialog.hide();
			break;
		
		case	R.id.quit:
			
			pausedialog.dismiss();
            
			Intent menuIntent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(menuIntent);
            mpbackground.stop();
            finish();
			break;
	
			
		}
		
		
	}
    
	
	@Override 
	public void onBackPressed() {
		
		dialogState(); 
		
	}
	
	
	public void dialogState() { 
		
		if (dialogIsActive) 
		{
			
			pausedialog.hide();
			dialogIsActive = false;
			
	    } else if (!dialogIsActive) { 
				
				pausedialog.show(); 
				dialogIsActive = true; 
		} 
	}
	
	 }

und hier die Spielview wo der dialog ja eigentlich rein soll ( gekürzt)


Code:
public class SpielView extends View implements OnTouchListener{
	

	int touchCounter = 0;
	int x,y; //Position von Figur
        boolean Ausgewählt = false;
	boolean F2Ausgewählt = false;
	SpielerActivity sp;
	Rect rectlinks;
	Rect rectrechts;
	int s = 1;
	int counter = 0;
	int counter2 = 0;
	
	
	public SpielView (Context context){
			
		 super(context);
		 
		 if (sp.player1blueTeam.isChecked() && sp.player2BlueTeam.isChecked()){
			 figur = new Objekte(BitmapFactory.decodeResource(getResources(), R.drawable.laufanimation2), 1100, 350);
			 figur1 = new Objekte(BitmapFactory.decodeResource(getResources(), R.drawable.laufanimation2), 10, 350);
		
			 
		}

			
			
	}
		 
		 startTouch = true;
		 
		 setBackgroundResource(R.drawable.game_background);
		 setOnTouchListener(this);	
		 
	
	 
	
	
	}
	public void onDraw(Canvas canvas){
		rectlinks = new Rect();
		rectlinks.set(70, 100, canvas.getWidth()/4, canvas.getHeight()-30);
		
		rectrechts = new Rect();
		rectrechts.set(1000, 100, canvas.getWidth()-50, canvas.getHeight()-30);
		

		
	    }	

	
		figur1.draw(canvas);
	    figur.draw(canvas);
		
		
		
		
		invalidate();	
	}
	
       @Override
	public boolean onTouch(View v, MotionEvent event) {
	    
            int touchX = (int) event.getX();
	    int touchY = (int) event.getY();
		
	    switch(event.getAction()){
	    case MotionEvent.ACTION_DOWN:
	    	
	    
	    	if(rectlinks.contains(touchX,touchY)){
	    	    counter ++;
	    		System.out.println(" du hast das linke Rect " +counter+ "mal gedrueckt");
	    		
	       
	    		
	    	}
	    	if(rectrechts.contains(touchX,touchY)){
	    		counter2 ++;
	    		System.out.println(" du hast das Rechte Rect " +counter2+ "mal gedrueckt");
	    		
	       
	    		
	    	

	   } 
}
 
Zuletzt bearbeitet:
Hallo,

ich vermute, du meinst mit Intent folgenden Code

Code:
Intent intent = new Intent (MainActivity.this,SpielerActivity.class);
startActivity(intent);
Wenn ja, dann liegt dein Problem darin, das der Dialog ein View ist, der zur MainActivity gehört.

In der SpielerActivity solltest du ein eigenen Dialog implementieren.


Ich habe mal kurz über deinen Code geschaut, vielleicht helfen Dir Entwurfsmuster (Design Pattern) beim Programmieren. Gerade bei der Spielprogrammierung sind sie sehr hilfreich, insbesondere wenn der Code komplexer wird. Entwurfsmuster

So wie der Code zur Zeit aussieht, uneinheitliche Schreibweise, Namen die nichts über die Funktion aussagen und fehlende Struktur im Code, ist dieser Code nicht wartbar. Ich wage mal eine Wette, in einem Jahr weißt du nicht mehr, wie die Teile alle zusammen gehören.

Ein Beispiel dazu: Im Code gibt es die Methode initialize(). In ihr steht Code zur Initialisierung der GUI. Gleichzeitig steht in onCreate() auch Code zur Initialisierung der GUI (Fehlende Struktur). Übersichlicher wäre es alle Views in der Methode initialize() zu instanziieren.
 
  • Danke
Reaktionen: UchihaSevenfold

Ähnliche Themen

M
Antworten
3
Aufrufe
140
moin
M
FabianDev
Antworten
5
Aufrufe
547
swa00
swa00
Jansenwilson
Antworten
1
Aufrufe
746
swa00
swa00
Zurück
Oben Unten