2011-12-04 51 views
0

我试图将列表中的元素(由用户通过对话框添加)保存到文件中,以便在重新打开时保持不变。由于某种原因,当我第二次向它添加元素时,它会抛出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之后。还有一件事需要注意的是,在onActivityResult方法中,在添加到lista之前,检查s是否为null。 –

+0

你解决了我的问题! :) – FloIancu

回答

1

问题是我没有“刷新”我的ListAdapter。除了notifyDataSetChanged()之外,我还在春晖建议中读过setListAdapter(lista)。

相关问题