【问题标题】:Where should I instantiate array of Class in Android Studio?我应该在哪里实例化 Android Studio 中的类数组?
【发布时间】:2016-03-26 14:20:38
【问题描述】:

当我尝试运行我的代码时出现此错误。 (为了让你更容易看到我跳过了大部分没有提到我的代码行的其他行)

03-26 22:23:51.800 2425-2425/? E/RCPManagerService:  PackageReceiver onReceive() Failed to load meta-data, NullPointer: null
03-26 22:23:53.950 15700-15700/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.example.bilguun.pengling2, PID: 15700
                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bilguun.pengling2/com.example.bilguun.pengling2.MainActivity}: java.lang.NullPointerException
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436)
                                                   at at com.example.bilguun.pengling2.MainActivity.onCreate(MainActivity.java:71)

如您所见,onCreate 函数的第 71 行出现错误,我试图实例化名为 Fault 的类,如本网站其他问题中所述。这是代码(我在外面声明的原因是我在许多其他功能和活动中需要这些类)

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Faults=new Fault[14];
    for(int i=0;i<15;i++){
        Faults[i]=new Fault("Unknown");
    }
}
Fault[] Faults;

这是Fault类的代码。 Serializable 的原因是,我需要将它传递给其他活动。

 class Fault implements Serializable{
    public String fault_name="Not known";
    public int L_number=0,T_number=0;
    public String path="b";
    public Fault(String name){
        this.fault_name=name;
    }
}

我已经尝试了所有可能的方法,包括以下链接和其他多种方法,但没有找到解决方案

NullPointerException when Creating an Array of objects

所以我的问题是

  1. 我可以在类之外声明一个数组,同时在 OnCreate 函数中实例化它吗?
  2. 除了数组声明之外,是否还有其他可能导致此类错误的错误。换句话说,代码的其他部分是否可能导致此错误?
  3. 既然没有 main 函数,我应该在哪里声明和实例化这些变量?
  4. 由于到目前为止我已经学习了 4 天的 Android Studio,从 Youtube 视频来看,我对 Java 和 Android 仍然没有信心(因为我知道的面向对象的语言只有 C++)。如果你不介意,你能推荐一本关于Android应用程序开发的书,它可以给我系统的知识吗?感谢您花时间在我的烂摊子上。

【问题讨论】:

    标签: android arrays class nullpointerexception


    【解决方案1】:

    这里有一个明显的问题。您正在访问大小为 14 的数组中索引为 14 的元素。数组从零开始,因此没有索引为 14 的元素。这 14 个元素的索引从 0 到 13。使用长度属性更容易数组以确保循环始终在边界内:

    Faults=new Fault[14];
    for(int i=0; i < Faults.length; i++){
        Faults[i]=new Fault("Unknown");
    }
    

    【讨论】:

    • 你成就了我的一天,希望你也一样
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2012-05-04
    • 2022-10-05
    • 2013-05-09
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多