1

OnLongClickListenerAndroid アプリでを使用しようとしています。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

どんな援助でも大歓迎です。ありがとう。

4

1 に答える 1

1

あなたが与えた情報を考えると、明らかな可能性は次のとおりです: myButton が null (NullPointerException をスローする) である可能性があります。つまり、id に対応する要素がビューに (まだ) 存在しないか、タイプ Button ではありません。 (これは ClassCastException をスローします)。

上記のコードの前setContentViewにアクティビティを呼び出すことを確認し、それが実際にボタンであることを確認してください。

お使いの携帯電話からの出力のサンプルがさらに役立ちます。コマンドの使用方法を調べadb logcatてください。発生した正確な例外が表示されます。

于 2012-09-16T16:46:02.437 に答える