CheckBox - android:onClick kann Methode nicht finden

  • 4 Antworten
  • Letztes Antwortdatum
E

Elmar1272

Neues Mitglied
1
Hallo Leute,

ich arbeite schon länger an einem Problem herum, dass sich einfach nicht lösen lassen will. Ich habe in einem Dialog eine CheckBox plaziert, die sofort beim Anklicken einen neuen Dialog öffnen soll. Ich habe im xml-File unter der Definition der CheckBox "android: onClick = xxx" mit der Methode verwendet, die auch in der aufrufenden Klasse definiert ist. Wenn ich dann im Emulator die CheckBox anklicke kommt sofort der Debugger mit dem Ergebnis, dass die Methode nicht gefunden werden kann. Kann mir da jemand helfen?

Hier die Codeschnipsel:

XML-File:

<CheckBox
android:id="@+id/exchange_ctr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/counternamelable"
android:layout_marginRight="14dp"
android:onClick="onCheckboxClicked"
android:text="Exchange" />

</RelativeLayout>


Hier der Ausschnitt aus der Klasse, die den Dialog verwaltet:




public void onCheckboxClicked(View v){
if(((CheckBox) v).isChecked()){
Log.v("CheckBox", "checked");
}
else
Log.v("CheckBox", "is unchecked");
}

und hier die Fehlermeldung:

FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not find a method onCheckboxClicked(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.CheckBox with id 'exchange_ctr'
at android.view.View$1.onClick(View.java:3031)
at android.view.View.performClick(View.java:3511)
at android.widget.CompoundButton.performClick(CompoundButton.java:100)
at android.view.View$PerformClick.run(View.java:14105)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: onCheckboxClicked [class android.view.View]
at java.lang.Class.getConstructorOrMethod(Class.java:460)
at java.lang.Class.getMethod(Class.java:915)
at android.view.View$1.onClick(View.java:3024)

ELMAR
 
Mal auf nem richtigen Gerät probiert?
Könnte evtl. ein Bug im Emulator sein ?!
 
Ich hab meine OnClick-Methoden noch nie im XML definiert, deswegen kann ich zu dem Fehler jetzt nichts sagen. Aber füg die Methode bzw. den Listener doch einfach im Code ein, dann sollte es keine Probleme geben :)
 
Setz den Listener doch lieber direkt im Code:

Code:
box = (CheckBox) findViewById(R.id.exchange_ctr);
 
	box.setOnClickListener(new OnClickListener() {
 
	  @Override
	  public void onClick(View v) {
                // checked?
		if (((CheckBox) v).isChecked()) {
			rundialog(); //deinen Dialog aufrufen
		}
 
	  }
	});

Hoffe, ich konnte helfen,

Greets,
Max
 
  • Danke
Reaktionen: Elmar1272
Hallo myeta,

vielen Dank. Auf diese Idee bin ich gar nicht gekommen. Habe mich ein wenig vom Android Developers Checkbox Tutorial fehlleiten lassen.

Gruß
Elmar
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.399
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
995
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
1.025
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
804
mkuz24
M
A
Antworten
5
Aufrufe
706
swa00
swa00
Zurück
Oben Unten