我一直在我的实际设备上测试我的应用程序,当我进行调试安装时,一切都很完美。但是当我构建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)
答案 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。