我工作的公司有一个应用程序,该应用程序已经开发了一段时间,并且可以在Android 4.4上完美运行。在我们的Nexus 5之一获得棒棒糖更新后,突然所有的onClicks都不再起作用。我尝试在其他设备和虚拟机上运行我们的应用程序,并且发生相同的问题。由于专有代码的原因,我只能展示很多,但这不应该成为问题。
具有onClick的第一个Activity是LoginActivity,它扩展了Activity,并且不接触片段或对话框(所有其他具有类似问题的结果被称为问题)。下面的示例来自一个按钮,该按钮应该允许您选择服务器:
public class LoginActivity extends Activity{
...
public void btnLoginServer_clicked(View v){
Intent serversIntent = new Intent(LoginActivity.this,ServersActivity.class);
startActivity(serversIntent);
}
...
}
堆栈跟踪显示:
E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.company.app, PID: 2241
java.lang.IllegalStateException: Could not find a method btnLoginServer_clicked(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'btnLoginServer'
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: btnLoginServer_clicked [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)
好的,这里是按钮的xml。
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnLoginServerNoServer"
android:id="@+id/btnLoginServer"
android:singleLine="true"
android:textColor="#de1bd500"
android:onClick="btnLoginServer_clicked"
android:background="@drawable/app_button_server_background" />
为了进一步澄清,该应用程序安装在装有android 4.4的两个设备上,它们已升级到5.0,并且开始出现此问题。该应用程序已删除并重新安装,同样的问题。该应用程序已重新安装在其他三个装有5.0的设备上,但以前从未安装过该应用程序,这是同样的问题。几个不同的虚拟机也是一样。
请帮我。我没有太多可拉的头发了,我担心我可能会在墙上扔一些昂贵的东西。
我不确定我完全理解为什么这是解决方案,也许有人可以解释。
有一个为应用程序定制的主题,该主题已应用到清单中的应用程序。它还以android:theme =“ customTheme”的形式应用于每个活动布局xml文件。从布局中删除这些可解决此问题。
希望这可以帮助其他人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句