Java I';我试图得到一个数组并抛出一个意图,但程序不断崩溃

Java I';我试图得到一个数组并抛出一个意图,但程序不断崩溃,java,android,Java,Android,我在做一个项目。我有两门课:课程,老师,学生。课程类中不包含任何数组,但讲师类包含课程类型的数组 public class Instructor { static private int ID = 0; static private int nofi = 0; private String FName, title, LName; private Course[] c1; public Instructor(String t, String fn, String ln,

我在做一个项目。我有两门课:课程,老师,学生。课程类中不包含任何数组,但讲师类包含课程类型的数组

public class Instructor {

  static private int ID = 0;
  static private int nofi = 0;
  private String FName, title, LName;
  private Course[] c1;

  public Instructor(String t, String fn, String ln, Course[] c1_1, int noc)
  {
      title = t;
      FName = fn;
      LName = ln;
      //ID += 1;
      nofi = 0;
      c1 = new Course[noc];
      c1 = c1_1.clone();

  }

  public String getFName()
  {
      return FName;
  }
  public String getLName()
  {
      return LName;
  }
  public String getTitle()
  {
      return title;
  }
  public int getID()
  {
      return ID;
  }
  public Course[] getC1()
  {
      return c1;
  }
  public int getNofi()
  {
      return ++nofi;
  }

}
我试图使用
getC1
方法,它是
Course
类型的数组

我在主要活动中所做的是,我创建了一个
讲师
类型的数组对象,并在列表中使用Intent Serializable将整个讲师数组发送到我的第二个活动

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
                            int position, long id) {
        if (position == 1)
        {
            intent.putExtra("instructor class", (Serializable)i);
            startActivity(intent);
        }

    }
});
但是当我试着运行这个应用程序时,它马上就崩溃了

x[0].getC1();
它告诉我试图从空数组中读取

然而,我从我的代码中删除了所有的空值,这很好。我不知道如何解决这个问题,也不知道语法是否正确。如何返回数组

错误消息:

04-10 15:48:36.684 26089-26089/? I/art: Late-enabling -Xcheck:jni
04-10 15:48:36.816 26089-26089/com.example.saa0d.kuattend W/System:                                       ClassLoader referenced unknown path: /data/app/com.example.saa0d.kuattend-         1/lib/arm64
04-10 15:48:36.873 26089-26089/com.example.saa0d.kuattend W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
04-10 15:48:36.957 26089-26089/com.example.saa0d.kuattend D/AndroidRuntime: Shutting down VM
04-10 15:48:36.958 26089-26089/com.example.saa0d.kuattend E/AndroidRuntime: 
FATAL EXCEPTION: main
Process: com.example.saa0d.kuattend, PID: 26089
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.saa0d.kuattend/com.example.saa0d.kuattend.SecondActivity}: java.lang.NullPointerException: Attempt to read from null array
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6121)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
 Caused by: java.lang.NullPointerException: Attempt to read from null array
    at com.example.saa0d.kuattend.SecondActivity.onCreate(SecondActivity.java:27)
    at android.app.Activity.performCreate(Activity.java:6682)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6121) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 
这是android studio中的错误消息:


实现可序列化

 public class Instructor implements Serializable
  {
  }
您将讲师类对象传递给下一个活动,而不是讲师类数组

    x = (Instructor[])intent2.getSerializableExtra("instructor class");
改为

    x = (Instructor)intent2.getSerializableExtra("instructor class");
还有一件事,不用这样的空格就可以用钥匙

"instructor_class"

你应该让你的课程实现,然后使用意图; Parcelable比Serializable快

另一种方法是继续使用Serializable并尝试将讲师[]替换为ArrayList,但我不确定这是否有帮助 谢谢你,伙计

       x = (Instructor)intent2.getSerializableExtra("instructor class");
这是问题的一部分,它不应该是数组。
主要问题是,当我开始运行应用程序时,我的debugged设置为只运行第二个活动,而不运行主活动。因此没有传递任何内容,这就是它为空的原因。

添加堆栈跟踪你的堆栈跟踪是什么意思?应用程序崩溃时出现的错误请阅读-总结是,这不是解决志愿者问题的理想方法,可能会对获得答案产生反作用。请不要把这个添加到你的问题中。我把它改成了那个,但我仍然遇到同样的问题。“尝试从空数组读取”我这样做了。我收到一条类型不兼容的消息。必需:com.example.saa0d.kuattend.讲师[]找到:com.example.saa0d.kuattend.InstructorContent.putExtra(“讲师类”,(可序列化)i);我到底是什么?我是讲师类型的变量。这是一个阵列有什么区别?我的老师告诉我要使用Serializable,因为它可以一次性传输所有内容。Serializable使用反射,速度要慢得多。尽管如此,您是否已尝试使课程类实现可序列化?请尝试将Bundle与ArrayList一起使用,如下所示:
       x = (Instructor)intent2.getSerializableExtra("instructor class");