Cannot instantiate class in Android App
我正在开发一个Android应用程序。在我的应用程序中,我打算去上另一门课。一旦发生这种情况,应用程序就会崩溃。它说它不能实例化我的类。我的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class CustomObject extends Activity{ ArrayList<String> Alerts; ArrayList<String> Names; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); Names = intent.getExtras().getStringArrayList("Names"); Alerts = intent.getExtras().getStringArrayList("Alerts"); } public CustomObject(ArrayList<String> prop1, ArrayList<String> prop2) { this.Names = prop1; this.Alerts = prop2; } public ArrayList<String> getProp1() { return Names; } public ArrayList<String> getProp2() { return Alerts; } } |
这是我的日志:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 10-24 19:56:25.234: E/AndroidRuntime(12982): FATAL EXCEPTION: main 10-24 19:56:25.234: E/AndroidRuntime(12982): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.dev.chicagotraintracker/com.dev.chicagotraintracker.CustomObject}: java.lang.InstantiationException: can't instantiate class com.dev.chicagotraintracker.CustomObject; no empty constructor 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.ActivityThread.access$600(ActivityThread.java:141) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.os.Handler.dispatchMessage(Handler.java:99) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.os.Looper.loop(Looper.java:137) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.ActivityThread.main(ActivityThread.java:5103) 10-24 19:56:25.234: E/AndroidRuntime(12982): at java.lang.reflect.Method.invokeNative(Native Method) 10-24 19:56:25.234: E/AndroidRuntime(12982): at java.lang.reflect.Method.invoke(Method.java:525) 10-24 19:56:25.234: E/AndroidRuntime(12982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 10-24 19:56:25.234: E/AndroidRuntime(12982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-24 19:56:25.234: E/AndroidRuntime(12982): at dalvik.system.NativeStart.main(Native Method) 10-24 19:56:25.234: E/AndroidRuntime(12982): Caused by: java.lang.InstantiationException: can't instantiate class com.dev.chicagotraintracker.CustomObject; no empty constructor 10-24 19:56:25.234: E/AndroidRuntime(12982): at java.lang.Class.newInstanceImpl(Native Method) 10-24 19:56:25.234: E/AndroidRuntime(12982): at java.lang.Class.newInstance(Class.java:1130) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 10-24 19:56:25.234: E/AndroidRuntime(12982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128) 10-24 19:56:25.234: E/AndroidRuntime(12982): ... 11 more |
我在代码中找不到问题。其他一些问题也提到了一些关于无参数构造函数的内容,但是如何实现它呢?这就是我的问题吗?谢谢你的帮助。
活动和片段可能没有带参数(a.k.a.参数)的构造函数,例如:
1 2 3 4 | public CustomObject(ArrayList<String> prop1, ArrayList<String> prop2) { this.Names = prop1; this.Alerts = prop2; } |
只允许不带参数的构造函数
您必须使用字符串数组在
要从其他活动创建此意图,可以使用
1 2 3 4 |
然后,在活动的
1 2 3 |
因为不可能通过一个简单的意图发送一个
活动需要一个非参数构造函数。现在,您添加了一个带有两个参数的构造函数。因此,还应添加一个非构造函数:
1 2 | public CustomObject(){ } |
继承
在您当前的情况下,您可以尝试通过保留这个有争议的构造函数并调用
我不喜欢这种方法。西蒙通过意图发送的解决方案是正确的方法。