2011-12-04 15 views
0

私はリストの要素をダイアログボックスでユーザーに追加してファイルに保存しようとしています。何らかの理由で、2回目に要素を追加するとnullPointerExceptionがスローされます(初回はうまく機能します)。これは私が救う方法です:Androidメモリのファイルが正しく保存されていません

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に書き込んだ後。もう1つ注意すべき点は、onActivityResultメソッドでは、listaに追加する前にsがnullかどうかであるということです。 –

+0

あなたは私の問題を解決しました! :) – FloIancu

答えて

1

問題は、私がListAdapterを "リフレッシュ"していないことでした。 notifyDataSetChanged()に加えて、私はChunhuiが示唆したようにsetListAdapter(lista)を読みました。

関連する問題