2017-08-09 2 views
0

In meinem Programm ich verwende diesen Code:OnTouchListener innerhalb einer Methode

int value =100; 

View.OnTouchListener button1listener = new View.OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 
    if (action == MotionEvent.ACTION_DOWN) { 

     if (value==50) { 
      System.out.println("button1, value 50"); 
     } else if (value==100) { 
      System.out.println("button1, value 100"); 
     } else if (value==200) { 
      System.out.println("button1, value 200"); 

    } else if (action == MotionEvent.ACTION_UP) 
      System.out.println("No action"); 
    return false; 
} 
}; 

button1.setOnTouchListener(button1listener); 

Es funktioniert gut, aber ich möchte es für viele Knöpfe machen, so dass anstelle von Kopieren und Einfügen ich möchte ein Verfahren haben dafür. Ich habe versucht, es alleine zu machen, aber meine Lösung ist nicht korrekt und ich bin mir nicht sicher, wie ich es schaffen kann. Code unten präsentiert meine falsche Lösung. Also im Grunde möchte ich diesen Code in eine Methode packen und dann mit setOnTouchListener und anderen Parametern aufrufen.

private void setListener(parameter1, String parameter2) { 
int value =100; 

View.OnTouchListener parameter1 = new View.OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 
    if (action == MotionEvent.ACTION_DOWN) { 

     if (value==50) { 
      System.out.println(parameter2 + "value 50"); 
     } else if (value==100) { 
      System.out.println(parameter2 + "value 100"); 
     } else if (value==200) { 
      System.out.println(parameter2 + "value 200"); 

    } else if (action == MotionEvent.ACTION_UP) 
      System.out.println("No action"); 
    return false; 
} 
}; 
} 
+1

Geräte 'OnTouchListener()' in der Klasse und in der Methode überprüfen Sie die Ansicht feststellen, dass Benutzer geklickt und Code eingeben, wenn Sie möchten, kann ich eine detaillierte Antwort erstellen. –

+0

Sie haben 'parameter1' in die Parameterliste ohne einen Typ eingefügt ... Das wird also nicht kompiliert. Plus, du hast es später neu definiert –

+0

@BrunoFerreira würde ich gerne sehen – AidanSalvatore

Antwort

0

Sie können eine Schnittstelle wie diese

public class YourActivity extends AppCompatActivity implements View.OnTouchListener { 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 
    if (v.getId() == R.id.button1) { // touched button 1 

verwenden Und wenn Sie die Taste

findViewById(R.id.button1) 
    .setOnTouchListener(YourActivity.this); 
+0

Es sieht besser aus als kopieren und einfügen, danke – AidanSalvatore

Verwandte Themen