OnLongClickListener导致运行时错误

时间:2012-09-16 16:41:38

标签: android

我一直在尝试在我的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

非常感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:1)

根据您提供的信息,显而易见的可能性是:myButton可能为null(将抛出NullPointerException),也就是说,视图上尚未存在与id对应的元素,或者它不是类型Button(将抛出ClassCastException)。

请确保在之前的活动上致电setContentView,并确保它确实是一个按钮。

来自手机输出的样本会有所帮助。了解如何使用adb logcat命令,它将显示您获得的确切异常。