2014-12-17 5 views
8

Ich habe android:onclick in Xml für ein ImageButton gesetzt und diese Methode in meiner Aktivität. in android s unter 5 funktioniert es gut, aber in android 5 gibt es mir Fehler.android 5 und onClick in XML-Layout

mein Imagecode:

<ImageButton 
    android:id="@+id/photo_detail" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/detail_icon" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:background="@drawable/image_background" 
    android:onClick="photoDetailButtonMethod"/> 

meine Methode Code:

public void photoDetailButtonMethod(View theButton) 
{ 
    //something 
} 

der Fehler:

java.lang.IllegalStateException: Could not find a method photoDetailButtonMethod(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.ImageButton with id 'photo_detail' 
      at android.view.View$1.onClick(View.java:3994) 
      at android.view.View.performClick(View.java:4756) 
      at android.view.View$PerformClick.run(View.java:19749) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.lang.NoSuchMethodException: photoDetailButtonMethod [class android.view.View] 
      at java.lang.Class.getMethod(Class.java:664) 
      at java.lang.Class.getMethod(Class.java:643) 
      at android.view.View$1.onClick(View.java:3987) 
            at android.view.View.performClick(View.java:4756) 
            at android.view.View$PerformClick.run(View.java:19749) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

durch den Fehler suchen i es die Suche nach meiner Methode in android.view.ContextThemeWrapper sehen Klasse so endet es mit NoSuchMethodException.

ich kann nicht herausfinden, wie das zu lösen, jede Hilfe?

1) Ich habe bereits tools:context=".PhotoViewerActivity" im Stamm meines Layouts hinzugefügt.

2) die Aktivität erweitert ActionBarActivity mit appCompat Thema.

Antwort

2

ich kann nicht finden, was ist das eigentliche Problem, vielleicht einige Inkompatibilitäten zwischen Eclipse und api 21 oder etwas anderes.

für jetzt habe ich nur eine onClickListener für diese Schaltfläche festgelegt.

2

schließlich fand ich das Problem.

Alles, was ich brauche, ist das XML-Layout einer Aktivität zuzuordnen. Dafür stellen Sie sicher, dass Sie im Design-Tab des XML-Layouts die richtige Aktivität ausgewählt haben.

enter image description here

+0

Das hat nicht für mich funktioniert. Danke trotzdem - es war sinnvoll, der Layoutdatei einen Kontext hinzuzufügen. – Mullazman

0

Seien Sie sicher, dass Ihre onClick Methode

public void photoDetailButtonMethod(View theButton) 
{ 
    //something 
} 

außerhalb onCreate() Methode geschrieben und in Ihrer Aktivitätsklasse.

17

Ich hatte ein sehr ähnliches Problem, es passiert nur auf Android Lollipop, während es auf den älteren Versionen gut funktioniert. Sieht wie ein Fehler oder undokumentiertes Feature in 5.0 aus.

Vergewissern Sie sich, dass in der Layout-Datei, wo Ihr ImageButton dort wohnt ist keinandroid:theme Satz, also nichts wie folgt aus:

android:theme="@style/Base.Theme.AppCompat.Light" 

Stattdessen definieren Sie Ihre Anwendung Thema in AndroidManifest.xml Applikationselement:

<application 
     ... 
     android:theme="@android:style/Theme.Holo.Light" 
     ... > 
1

Es passiert, wenn Sie die public void onClick(View view) Methode innerhalb des Fragments anstelle der Aktivität

deklariert haben
-1

Seine google nur Dienste Problem und nichts spielen mit Codierung oder Einstellungen bla bla zu tun ...

aktualisieren Sie einfach Ihre Google Play-Dienste von Telefon und fügen Sie Abhängigkeiten in Build.gradle Datei wie:

Kompilierung 'com.google.android.gms: play-Dienste: 7.5.0'

0

ich tat dies mit einem "menuItem", und hatte diese:

public void photoDetailButtonMethod(View theButton) 
{ 
    //something 
} 

Was für MenuEtems falsch ist. Dann müssen Sie dies haben:

public void photoDetailButtonMethod(MenuItem theButton) 
{ 
    //something 
} 

Es war der gleiche Fehler wie vom OP erwähnt.

Hoffe, das hilft jemandem ...