我一直在尝试在我的Android应用中使用OnLongClickListener
。我试图在用户按下按钮时使用OnLongClickListener
递增数字。我已经使用OnClickListener
代码在我的应用程序的其他地方工作,只是更新它OnLongClickListener
但是当我尝试运行我的应用程序运行时错误发生。这是我的代码:
public void onCreate(Bundle savedInstanceState) //performed when application is first run
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //link to activity_main.xml
calculateElapsedTime();
Button myButton = (Button)findViewById(R.id.delayUp);
myButton.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v){
System.out.println("Hello World");
return true;
}
});
}
有人可以提供一些有关此代码无法正常工作的见解。请注意,我在代码中有“Hello World”严格用于测试目的但是因为当应用程序加载时我得到运行时错误,显然这行代码从未被处理过。
以下是LogCat的错误:
09-16 17:22:34.982: D/dalvikvm(275): GC_EXTERNAL_ALLOC freed 750 objects / 55632 bytes in 179ms
09-16 17:22:35.113: D/AndroidRuntime(275): Shutting down VM
09-16 17:22:35.124: W/dalvikvm(275): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-16 17:22:35.203: E/AndroidRuntime(275): FATAL EXCEPTION: main
09-16 17:22:35.203: E/AndroidRuntime(275): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.morinnic.intervaltimer/com.morinnic.intervaltimer.MainActivity}: java.lang.ClassCastException: android.widget.ImageButton
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.os.Handler.dispatchMessage(Handler.java:99)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.os.Looper.loop(Looper.java:123)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-16 17:22:35.203: E/AndroidRuntime(275): at java.lang.reflect.Method.invokeNative(Native Method)
09-16 17:22:35.203: E/AndroidRuntime(275): at java.lang.reflect.Method.invoke(Method.java:521)
09-16 17:22:35.203: E/AndroidRuntime(275): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-16 17:22:35.203: E/AndroidRuntime(275): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-16 17:22:35.203: E/AndroidRuntime(275): at dalvik.system.NativeStart.main(Native Method)
09-16 17:22:35.203: E/AndroidRuntime(275): Caused by: java.lang.ClassCastException: android.widget.ImageButton
09-16 17:22:35.203: E/AndroidRuntime(275): at com.morinnic.intervaltimer.MainActivity.onCreate(MainActivity.java:32)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-16 17:22:35.203: E/AndroidRuntime(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-16 17:22:35.203: E/AndroidRuntime(275): ... 11 more
非常感谢任何帮助。 感谢。
答案 0 :(得分:1)
根据您提供的信息,显而易见的可能性是:myButton可能为null(将抛出NullPointerException),也就是说,视图上尚未存在与id对应的元素,或者它不是类型Button(将抛出ClassCastException)。
请确保在之前的活动上致电setContentView
,并确保它确实是一个按钮。
来自手机输出的样本会有所帮助。了解如何使用adb logcat
命令,它将显示您获得的确切异常。