Domanda

Sto scrivendo un'app per Java ME e ho bisogno di una classe per conservare alcuni dati (Rubrica). Quando provo ad avviare questa app, ricevo sempre nullPointerException. Sto chiamando il costruttore di una classe e alloca memoria per 10 elementi, quindi non dovrebbe essere nullo. Che cosa sto facendo di sbagliato?

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;

public class TinyMIDlet extends MIDlet implements CommandListener {

    private PhoneBook phoneBook = new PhoneBook();

    public void initPhoneBook() {
        phoneBook.records[0].Name = new String("abc");        
    }

    protected void startApp() {
        initPhoneBook();
    }

    public class Record {
        public String Name;
        public String Number;
        public String email;
        public String Group;
    }

    public class PhoneBook {
        public Record[] records;

        PhoneBook() {
            records = new Record[10];
        }
    }
}
È stato utile?

Soluzione

L'array di record non è nullo, ma lo è ogni singolo elemento. Devi anche istanziare ogni elemento, in questo momento è solo un array con 10 voci null.

Altri suggerimenti

phoneBook.records[0].Name = new String("abc");  

dovrebbe essere

phoneBook.records[0] = new Record();
phoneBook.records[0].Name= new String("abc");// or  = "abc"

Non sono ancora abbastanza affidabile (heh) per modificare la risposta dettagliata di Tom, ma, per essere precisi

phoneBook.records[0] = new something();

dovrebbe essere

phoneBook.records[0] = new Record();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top