安卓apk图片按钮单击崩溃

时间:2012-03-19 14:21:19

标签: android apk imagebutton

我一直在我的实际设备上测试我的应用程序,当我进行调试安装时,一切都很完美。但是当我构建APK并安装它时,应用程序可以很好地加载到主屏幕。当我单击主屏幕上的其中一个图像按钮时,它会崩溃。再次,只有apk构建在图像按钮单击时崩溃,如果我通过调试将应用程序部署到设备或使用模拟器,该应用程序工作正常。

在我的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"/>

代码中的click事件方法:

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)

2 个答案:

答案 0 :(得分:0)

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

看看,

  

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

它说,

  

视图所在的View视图上下文中的方法名称   点击。此名称必须与采用的公共方法相对应   恰好是View类型的一个参数。例如,如果您指定   android:onClick =“sayHello”,你必须声明一个公共空白   sayHello(View v)您的上下文方法(通常是您的Activity)。

答案 1 :(得分:0)

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