xml onClicks 不再适用于 android lollipop 中的 Activity

标签 xml android-layout android-activity onclick upgrade

我工作的公司有一个应用程序,我已经开发了一段时间并且在 Android 4.4 上运行得非常好。在我们的一台 Nexus 5 获得 Lollipop 更新后,突然所有 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 但以前从未安装过该应用程序的设备上,同样的问题。对于几个不同的虚拟机也是如此。

请帮助我。我没有多少头发可以拔了,我担心我可能会把一些昂贵的东西扔到墙上。

最佳答案

我不确定我完全理解为什么这是解决方案,也许有人可以解释。

为应用程序制作了一个自定义主题,并将其应用于 list 中的应用程序。它还作为 android:theme="customTheme"应用于每个 Activity 布局 xml 文件。从布局中删除这些内容解决了问题。

希望这对其他人有帮助。

关于xml onClicks 不再适用于 android lollipop 中的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555945/

相关文章:

xml - 在 SQL Server 中,确定给定字符串是否为有效 XML 的最佳方法是什么?

android-activity - 无法将 com.google.android.gms.iid.InstanceID 导入我的项目

android: Service vs SingleTop Activity 移至后台 - 有什么区别?

c# - 多个根节点

java - 状态 404 – 在使用 RESTFul API 的 @post 注释上未找到

xml - Perl,XML::Twig,如何读取具有相同标签的字段

android - 什么是正内边距和负内边距?

android - 我应该隐藏 AdMob 广告 View 还是完全删除它?

android - 理解weight和layout_weight,layout_weight越大,在layout中缩小的越多。

android - 通过 RecorderAudio Activity 获取录制的音频