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)
答案是在堆栈跟踪中。从命令行执行“adb logcat”,然后强制应用程序出错。你会在日志中看到一个堆栈跟踪,准确地(几乎)告诉你错误是什么。
看看,
http://developer.android.com/reference/android/view/View.html#attr_android:onClick
它说,
在此查看上下文的方法来调用当视图 点击的名称。该名称必须对应于一个公共方法,该方法只需要使用 类型View的一个参数。例如,如果您指定了 android:onClick =“sayHello”,则必须声明您的上下文(通常为您的活动)的sayHello(View v)方法的公共void 。
这只发生在我从apk安装应用程序时发生。我该如何使用logcat?此外,这发生在应用程序中的任何imagebutton点击。 – Jesse 2012-03-19 14:29:36
再次,答案是logcat。 logcat始终在运行。它不依赖于你从eclipse安装(如果这就是你说的话)。您可以从命令行运行“adb logcat”,或者您可以在运行应用程序时保持eclipse连接。 – 2012-03-19 14:32:17
这是很好的知道,我从来不知道它总是在运行......我得到了日食中的错误(我已经有一个logcat选项卡)。 java.lang.illegalstateexception:无法在视图类android.widget.ImageButton上使用id'btnHomeServices' – Jesse 2012-03-19 14:40:55
问题是,如果您要制作发布版本/使用proguard,则不应在布局文件中指定onClick。您应该在onCreate中使用setOnClickListener。
真的吗?所以这种类型的功能仅用于调试目的?我想看看它在android文档中的位置。但这是有道理的。我无法想象为什么他们会这样做,然后让你改变发布的代码。 – Jesse 2012-03-19 17:34:22
问题是没有人在添加Proguard之后进入文档,说它会更改您在XML中指定的方法名称。换句话说,“HomeServicesClick”方法可能重命名为()或类似的东西。不幸的是,XML不会自动更新。 – 2012-03-19 18:41:43
你有没有**干净**你的项目? – waqaslam 2012-03-19 14:24:37
我刚试过,没有什么不同。 – Jesse 2012-03-19 14:29:50
它在模拟器上运行良好吗? – waqaslam 2012-03-19 14:32:13