2012-04-14 4 views
2

Hier ist mein Code - PadsGrid ist ein Viewgroup -:Warum funktioniert das Touch-Ereignis auf dem Kind meiner ViewGroup nicht?

public class Emc_PadControllerActivity extends Activity implements OnTouchListener { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final PadsGrid pg = new PadsGrid(this, 8, 5, PadType.SMALL); 
     for (int i=0;i<pg.getChildCount();i++){ 
      final PadController pc; 
      pc=(View) pg.getChildAt(i); 
      pc.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View arg0, MotionEvent arg1) { 
        pc.onTouch(arg0,arg1); 
        return true; 
       }});; 
     } 

     setContentView(pg); 

    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     v.onTouchEvent(event); 
     return false; 
    } 
} 

Dabei is'nt die OnTouch Ereignis meiner Ansichten nennen, warum ich sie berühren, warum?

Antwort

1

Sie möchten Ihre onTouchlistener zu Emc_PadControllerActivity.this anstatt die anonyme innere Klasse als solche setzen:

pc.setOnTouchListener(Emc_PadControllerActivity.this) 

dies rufen Sie Ihren OnTouch() in der Hauptklasse. Hier können Sie festlegen, auf welche Ansicht geklickt wurde und entsprechend vorgehen.

Schauen Sie sich meine früheren question here.

+0

Ok, aber ich wollte die Ansichten direkt cath der onTouchEvent. Weil auf diese Weise Multitouch-Ereignisse schneller und einfacher behandelt werden können! – nonozor

+0

In diesem Fall sollten Sie in der Lage sein 'pc.setOnTouchListener (pc.onTouch());' ... Ich gehe davon aus, dass die PC-Klasse eine onTouch() -Methode hat. – cstrutton

+0

Ja natürlich, aber wie man die zwei Argumente übergibt: Ereignis und Sicht zur onTocuh Methode? – nonozor

Verwandte Themen