2011-01-06 11 views
2

Ich habe 3 Klassen: MainActivity, DrawView und SecondActivity. MainActivity verwenden Sie einfach DrawView, um etwas auf dem Bildschirm zu zeichnen. Wie kann ich SecondActivity starten, wenn ich den Bildschirm auf einer Bitmap berühre, weiß ich, wo die Bitmap (im Code) ist. Die onTouchEvent-Funktion aus der DrawView-Klasse.Android: startActivity() in einer Klasse, die erweitert View

@Override 
public boolean onTouchEvent(final MotionEvent ev) { 
    switch (ev.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 

      float posX = ev.getX(); 
      float posY = ev.getY(); 
      if(play.touched(posX, posY)==true){ 

      } else { 
      } 
      return true; 
     } 

} 
    return false; 
} 

Die Funktion play.touched(posX,posY) einen Booleschen Wert zurück (I machte eine Klasse, die die Position der Bitmap handel). Wie kann ich Second Activity von hier aus starten?

+0

Blick auf diese: http://stackoverflow.com/questions/5203019/how-to-start-one-activity-from-customized-view – user1400290

Antwort

10
 if(play.touched(posX, posY)){ 
      Intent intent = new Intent(getContext(), SecondActivity.class); 
      ((Activity)getContext()).startActivity(intent); 
     } else { 
     } 
+0

I kann startActivity (Intent) in einer Klasse nicht aufrufen, was View erweitert. – Felix

+0

Versuchen Sie es so ... es funktioniert, wenn Sie DrawView aus Ihrer Aktivität erstellt haben. Ansonsten ... musst du etwas wie das Observer Pattern implementieren. – Cristian

0

Haben Sie versucht:

if(play.touched(posX, posY)){ 
    Intent intent = new Intent(getContext(), SecondActivity.class); 
    super.getContext().startActivity(intent); 
} else { 
} 
Verwandte Themen