2012-12-13 67 views
-1

在下面的代碼中,它顯示了一個錯誤run(),所以如果我把@override置於run()之上,那麼應用程序在draw()處顯示錯誤。有人幫助完成基本步驟。以下是代碼:InstantiationException:無法實例化類..沒有空的構造函數

private class MyWallpaperEngine extends Engine { 
      private final Handler handler = new Handler(); 
      private final Runnable drawRunner = new Runnable() { 
       public void run() { 
        draw(); 
       } 
      }; 
    } 

12-14 00:55:24.111: W/dalvikvm(7141): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-14 00:55:24.181: E/AndroidRuntime(7141): FATAL EXCEPTION: main 
12-14 00:55:24.181: E/AndroidRuntime(7141): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.sri.alinwallpaper/com.sri.alinwallpaper.MyPoint}: java.lang.InstantiationException: can't instantiate class com.sri.alinwallpaper.MyPoint; no empty constructor 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1879) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.os.Looper.loop(Looper.java:137) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at dalvik.system.NativeStart.main(Native Method) 
12-14 00:55:24.181: E/AndroidRuntime(7141): Caused by: java.lang.InstantiationException: can't instantiate class com.sri.alinwallpaper.MyPoint; no empty constructor 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at java.lang.Class.newInstanceImpl(Native Method) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at java.lang.Class.newInstance(Class.java:1319) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1870) 
12-14 00:55:24.181: E/AndroidRuntime(7141):  ... 11 more 
12-14 00:55:37.751: I/Process(7141): Sending signal. PID: 7141 SIG: 9 
+1

在哪個類中聲明'draw()'? – fadden

+0

向我們顯示錯誤消息。 – Patrick

+0

new Runnable(){}類型的run()方法必須重寫超類方法 – Priyanka

回答

1

刪除@Override註釋。它應該沒有問題。

根據the answer in this question,這是因爲在Java 5中,不能使用@Override註釋和實現了接口的方法,只能使用實際的超類方法。

+0

如果我刪除@override它顯示在繪製錯誤(), – Priyanka

+0

這是一個完全不同的問題。我的第一個猜測是它應該說'MyWallpaperEngine.this.draw();'然而,我不確定你想要調用哪個'draw'方法。 –

+0

好吧西蒙它的工作原理,我改變了編譯器屬性5至6. – Priyanka

相關問題