onClick-Attribut im XML-linking-Methode in der Activity-Klasse
Gibt es durchaus ein paar Fragen zu diesem Thema, aber konnte keine finden, die mit dem spezifischen problem habe ich auch...
In meinem layout.xml ich benutze die android:onClick
tag für eine Taste zum aufrufen der rechten onClickListener
. Ich bekomme die Fehlermeldung :
java.lang.IllegalStateException: Could not find a method handle_cancel(View) in the activity class com.matthieu.HelloWorldApplication for onClick handler on view class android.widget.Button with id 'button_cancel'
Habe ich dieses Methode implementiert die Aktivität, sondern er sucht es in der Klasse, die Sie erweitert Application
... ich verstehe nicht warum. Die Ansicht und alle, die setup nur in der Tätigkeit.
Wenn jemand braucht, hier ist die Erklärung, dass die Methode (in meiner Tätigkeit NICHT in HelloWorldApplication):
public void handle_cancel(View v) {
//do something useful here
}
Bearbeiten (von adamp Anfrage)... und wahrscheinlich Beantwortung meiner eigenen Frage :
Hier ist der Teil des Codes, wo das layout verwendet wird...
public class AddVocabularyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.top); //that layout contains an empty LinearLayout id/main_content
}
private some_other_function() {
LinearLayout main_content = (LinearLayout) findViewById(R.id.main_content);
main_content.removeAllViews();
View.inflate(getApplicationContext(), R.layout.hello, main_content); //layout.hello is the one containing the button
}
//some other stuff
}
Während copy/paste diese code, ich vermute, das problem ist, dass ich verwendet getApplicationContext
zum aufblasen der Ansicht, dass Button
...
- Können Sie nach dem code, wo du das layout?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits in meinem edit, ändern der
getApplicationContext()
mit der Aktivität Kontext behebt es...Des übereinkommens funktioniert wie folgt:
In der layout-xml-Datei, geben Sie dieses Attribut:
android:onClick:"methodname"
Dann, innerhalb einer Klasse eine Methode definieren, wie diese:
public void methodname(View v){
//Ihre Methode code
}
Jede andere Art, dies zu tun, ist nicht dokumentiert. Wenn Sie brauchen Parameter, rufen Sie einfach eine andere Methode innerhalb dieser Methode.