Android сохранить файл во внутренней памяти не работает должным образом - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь сохранить элементы списка (добавленные пользователем через диалоговое окно) в файл, чтобы он оставался неизменным при повторном открытии. По какой-то причине он выдает исключение nullPointerException, когда я добавляю к нему элементы во второй раз (первый раз работает хорошо). Вот как я экономлю:

public void onPause(){
        super.onPause();
        try {
            OutputStreamWriter out = new OutputStreamWriter(openFileOutput(salvare, 0));
            for(int i=0; i<lista.orase.size(); i++){
                out.write(lista.getItem(i)+"\n"); //ia fiecare element al listei si il scrie in fisier urmat de endline;
            }
            out.close();
            System.out.println("ON PAUSE!");
        } catch (Throwable t){

        }
    }

И вот как я получаю на создание:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lista=new ListaOrase(this);
        buton=(Button)findViewById(R.id.buton);

        setListAdapter(lista);

        try {
            InputStream in= openFileInput(salvare);
            if(in!=null){
                InputStreamReader tmp = new InputStreamReader(in);
                BufferedReader reader = new BufferedReader(tmp);
                String str;
                while(reader.readLine()!=null){
                    str=reader.readLine();
                    lista.add(str);
                        }
                in.close();
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

Исключением является эта функция (которая прекрасно работала до добавления функции сохранения). Он получает намерение из диалогового окна и добавляет элемент в список.

public void onActivityResult (int requestCode, int responseCode, Intent data){
                if(responseCode==1){
            String s=data.getStringExtra("oras");   
            lista.add(s);
            setListAdapter(lista);
        }
    }

Что может быть за связь между ними и как я могу это исправить?

1 Ответ

1 голос
/ 08 декабря 2011

Проблема заключалась в том, что я не обновлял свой ListAdapter. Наряду с notifyDataSetChanged () я прочитал setListAdapter (lista), как предложил Чуньхуэй.

...