2012-04-02 9 views
2

ich einen Knopf in meinem Android-Anwendung erstellt haben & ich Onclick listner zu setzen versucht onClick Methode auszuführen wie folgtAndroid setOnClickListener (this) Fehler

... 
Button btn_ok; 
    btn_ok = (Button)findViewById(R.id.button1); 
    btn_ok.setOnClickListener(this); 


} 
public void onClick() { 
    EditText uN = (EditText) findViewById(R.id.EditText04); 
    uN.setText("Clicked!"); 
    } 

Aber Eclipse-zeigt einen Fehler, sagt &, dass "setOnClickListener" need Argument zu werfen. Nach dem Gießen ist es wie dieser

btn_ok.setOnClickListener((OnClickListener) this); 

Dann, wenn ich das Programm Emulator sagt, dass „Programm wurde unerwartet beendet“ läuft ... Wie kann ich dieses Problem lösen?

+1

Höchstwahrscheinlich werden Sie importieren/die falsche Umsetzung 'onClickListener' sicherstellen, dass es das für' View' und nicht die eine für 'DialogInterface'. – Squonk

Antwort

7

Stellen Sie sicher, dass Ihre Klasse View.OnClickListener implementiert. Sie können nicht nur OnClick-Methode hinzufügen, müssen Sie Schnittstelle implementieren

+0

Danke ... Es hat funktioniert – Grant

5

Die Signatur Ihrer onClick Methode ist falsch, was mich zu der Annahme führt, dass Sie nicht wirklich implementieren die Schnittstelle View.OnClickListener.

sollte die Unterschrift sein:

public void onClick(View v) 
{ 
    //your implementation, v is your button that was clicked 
} 

Beachten Sie, dass die Ansicht, die als Argument übergeben wurde angeklickt wird, so gibt es keine Notwendigkeit findViewById aus Ihrem onClick Methode aufzurufen.

2

setOnClickListener nehmen eine OnClickListener Instanz als Parameter und OnClickListener ist eine Schnittstelle, welche Inhalte ein onClick() Methode und Sie vorbei hier setOnClickListener (this); aktueller Kontext. so haben Sie zwei Optionen entweder implementiert OnClickListener in Ihrer Aktivität und zweiten Einsatz auf diese Weise:

this.btn_ok.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    //do your work here 
    } 
    }); 
4

die OnClickListener von Ihrer Aktivität implementieren und überschreiben Sie die Methode:

@override 

public void onClick(View v) 
{ 
    switch(v.getId()){ 
     case R.id.button1: 
     EditText uN = (EditText) findViewById(R.id.EditText04); 
     uN.setText("Clicked!"); 
     break; 
     case default: 
     break; 
} 
} 

Hoffe, es hilft.

1

Vergewissern Sie sich, dass Sie die Schnittstelle View.OnClickListener implementieren und auch passieren Blick auf onClick Methode

Verwandte Themen