android apk imagebutton点击崩溃

问题描述:

我一直在测试我的应用程序在我的实际设备上,当我进行调试安装时,一切正常。但是当我构建APK并安装它时,该应用可以很好地加载到主屏幕上。当我点击主屏幕上的一个图像按钮时,它会崩溃。同样,如果我通过调试将应用程序部署到设备或者使用模拟器,那么只有apk内部版本会在按钮点击时崩溃,该应用程序完美无缺。android apk imagebutton点击崩溃

在我的XML,这里是一个按钮的例子:

<ImageButton 
android:id="@+id/btnHomeServices" 
android:src="@drawable/button_homeservices" 
android:scaleType="fitCenter"  
android:layout_width="wrap_content" 
android:layout_height="wrap_content"     
android:adjustViewBounds="true" 
android:layout_marginRight="3dip" 
android:layout_marginLeft="3dip" 
android:background="@null" 
android:onClick="HomeServicesClick"/> 

而在代码中的点击事件方法:

public void HomeServicesClick(View view) 
{ 
    //we do some stuff here 
} 

我甚至注释掉内HomeServicesClick和它的代码仍然崩溃,所以我知道这个问题不是它尝试在该方法中执行的代码。

03-19 11:02:18.605: ERROR/AndroidRuntime(18211): FATAL EXCEPTION: main 
03-19 11:02:18.605: ERROR/AndroidRuntime(18211): java.lang.IllegalStateException: Could not find a method HomeServicesClick(View) in the activity class com.WhiteLabel.LoadingScreen for onClick handler on view class android.widget.ImageButton with id 'btnHomeServices' 
03-19 11:02:18.605: ERROR/AndroidRuntime(18211):  at android.view.View$1.onClick(View.java:2178) 
03-19 11:02:18.605: ERROR/AndroidRuntime(18211):  at android.view.View.performClick(View.java:2532) 
03-19 11:02:18.605: ERROR/AndroidRuntime(18211):  at android.view.View$PerformClick.run(View.java:9293) 
03-19 11:02:18.605: ERROR/AndroidRuntime(18211):  at android.os.Handler.handleCallback (Handler.java:587) 
03-19 11:02:18.605: ERROR/AndroidRuntime(18211):  at android.os.Handler.dispatchMessage(Handler.java:92) 
+0

你有没有**干净**你的项目? – waqaslam 2012-03-19 14:24:37

+0

我刚试过,没有什么不同。 – Jesse 2012-03-19 14:29:50

+0

它在模拟器上运行良好吗? – waqaslam 2012-03-19 14:32:13

答案是在堆栈跟踪中。从命令行执行“adb logcat”,然后强制应用程序出错。你会在日志中看到一个堆栈跟踪,准确地(几乎)告诉你错误是什么。

看看,

http://developer.android.com/reference/android/view/View.html#attr_android:onClick

它说,

在此查看上下文的方法来调用当视图 点击的名称。该名称必须对应于一个公共方法,该方法只需要使用 类型View的一个参数。例如,如果您指定了 android:onClick =“sayHello”,则必须声明您的上下文(通常为您的活动)的sayHello(View v)方法的公共void 。

+0

这只发生在我从apk安装应用程序时发生。我该如何使用logcat?此外,这发生在应用程序中的任何imagebutton点击。 – Jesse 2012-03-19 14:29:36

+0

再次,答案是logcat。 logcat始终在运行。它不依赖于你从eclipse安装(如果这就是你说的话)。您可以从命令行运行“adb logcat”,或者您可以在运行应用程序时保持eclipse连接。 – 2012-03-19 14:32:17

+0

这是很好的知道,我从来不知道它总是在运行......我得到了日食中的错误(我已经有一个logcat选项卡)。 java.lang.illegalstateexception:无法在视图类android.widget.ImageButton上使用id'btnHomeServices' – Jesse 2012-03-19 14:40:55

问题是,如果您要制作发布版本/使用proguard,则不应在布局文件中指定onClick。您应该在onCreate中使用setOnClickListener。

+0

真的吗?所以这种类型的功能仅用于调试目的?我想看看它在android文档中的位置。但这是有道理的。我无法想象为什么他们会这样做,然后让你改变发布的代码。 – Jesse 2012-03-19 17:34:22

+0

问题是没有人在添加Proguard之后进入文档,说它会更改您在XML中指定的方法名称。换句话说,“HomeServicesClick”方法可能重命名为()或类似的东西。不幸的是,XML不会自动更新。 – 2012-03-19 18:41:43