2011-12-04 2 views
0

다시 열었을 때 같은 상태로 유지되도록 목록의 요소 (대화 상자를 통해 사용자가 추가 한)를 파일에 저장하려고합니다. 그것은 두 번째 요소를 처음 추가 할 때 nullPointerException을 throw합니다 (처음에는 제대로 작동합니다). 이것은 내가 저장하는 방법입니다안드로이드 안드로이드 저장 파일이 제대로 작동하지 않습니다.

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){ 

     } 
    } 

을 그리고 이것은 내가에서 onCreate 검색하는 방법입니다

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

onCreate 메서드에서 setListAdapter (lista); 당신이 파일에서 str을 lista로 채운 후에. 주목할 필요가있는 또 하나의 점은 onActivityResult 메소드에서 list s에 추가하기 전에 s가 null인지 아닌지를 확인하는 것입니다. –

+0

당신은 내 문제를 해결했습니다! :) – FloIancu

답변

1

문제는 내가 ListAdapter를 "새로 고침"하지 않았기 때문입니다. notifyDataSetChanged()와 함께 Chunhui가 제안한대로 setListAdapter (lista)를 읽었습니다.

관련 문제