FileInputStream NullPointerException в Android - PullRequest
1 голос
/ 11 марта 2012

Я очень плохо знаком с программированием на Android, но у меня есть некоторый опыт работы с Java и C ++.Хотя я смог сделать большую часть программы, я застрял с NPE в FileInputStream.Я пытаюсь создать программу посещаемости, которая отслеживает посещение студентом лекций.Вот код, который выбрасывает NPE:

    public class Attendance extends Activity {
Subject s[] = new Subject[13];
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    for(int i=0;i<13;i++) {
        s[i] = new Subject();
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

public void loadData(Subject s[]) throws IOException{
    for(int i=0;i<13;i++) {
        int a[] = new int [2];
        int x=0;
        try {
            FileInputStream fIn = openFileInput("s["+i+"].txt");
            InputStreamReader isr = new InputStreamReader(fIn); //NPE occurs here
            //char buff[] = new char[100];
            //isr.read(buff);
            BufferedReader br = new BufferedReader(isr);
            String str = new String();
            while ((str=br.readLine())!=null) {
                a[x]=Integer.parseInt(str);
                x++;
            }
            s[i].acceptAttd(a[0]);
            s[i].acceptLecs(a[1]);
        }
        catch(IOException e) {
            //do nothing.
        }
    }
}

public void addAttnd(View v) throws IOException{
    setContentView(R.layout.addattnd2);
    Attendance a = new Attendance();
    a.loadData(s); //this line calls the method containing FileInputStream
}

1 Ответ

1 голос
/ 11 марта 2012

Я предполагаю, что вы получаете NullPointerException при доступе к вашему массиву Subject.

Я не собираюсь гарантировать, что это будет работать, но попробуйте этоВ вашем onCreate () создайте экземпляры объектов Subject после вызова super.onCreate ().

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    for(int i=0;i<13;i++) {
        s[i] = new Subject();
    }
    setContentView(R.layout.main);
}
...