2013-06-15 2 views
0

저는 직렬화를 처음 사용하고 내 응용 프로그램에 ArrayList를 저장하려고합니다. 나는 자습서를 발견하고 내 애플 리케이션에 넣어려고. 그것은 파일을 저장하지 않는 것으로 밝혀 졌 및 나는 무슨 일이 일어나고 있는지 전혀 모른다 (logcat에 오류 없음).Android : 파일이 직렬화로 저장되지 않습니다.

package com.frostbytedev.randomgenie; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Steven on 6/11/13. 
*/ 
public class NewList extends Activity implements View.OnClickListener{ 
    String ListName; 
    String ItemText; 
    int i = 0; 

    List<EditText> List = new ArrayList<EditText>(); 
    Button save; 
    EditText FileName, etItem1, etItem2, etItem3, etItem4, etItem5; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.newlist); 
     initilize(); 
    } 

    private void IndexList() { 
     List.add(FileName); 
     List.add(etItem1); 
     List.add(etItem2); 
     List.add(etItem3); 
     List.add(etItem4); 
     List.add(etItem5); 

     for(i=1;i<5;i++){ 
      ItemText = List.get(i).getText().toString(); 
      if(ItemText.contentEquals("")){ 
       List.remove(List.get(i)); 
      } 
     } 

    } 

    private void initilize() { 
     save = (Button)findViewById(R.id.bSave); 
     FileName = (EditText)findViewById(R.id.etFileName); 
     etItem1 = (EditText)findViewById(R.id.etItem1); 
     etItem2 = (EditText)findViewById(R.id.etItem2); 
     etItem3 = (EditText)findViewById(R.id.etItem3); 
     etItem4 = (EditText)findViewById(R.id.etItem4); 
     etItem5 = (EditText)findViewById(R.id.etItem5); 


    } 

    @Override 
    public void onClick(View view) { 
     switch(view.getId()){ 

      case R.id.bSave: 
       IndexList(); 
       try { 
        SaveList(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 


     } 
    } 


    private void SaveList() throws IOException { 
     FileOutputStream fos = null; 
     ObjectOutputStream out = null; 
     try { 
      fos = new FileOutputStream(FileName.getText().toString()+".dat"); 
      out = new ObjectOutputStream(fos); 
      out.writeObject(List); 
      FileName.setText("Its worked!"); 

      out.close(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
+0

AndroidManifest.xml 안에 쓰기 권한이 있습니까? – Blackbelt

답변

0

직렬화 항목에 대한 규칙 당신이 직렬화하려고하는 모든 구성원이 Serializable 인터페이스를 구현해야한다는 것입니다 :

여기 내 자바입니다. EditText는 Serializable을 구현하지 않으므로 ArrayListEditText으로 serialize하려고하면 NotSerializableException이 표시됩니다. 국제 대회 회원 및 변수의 경우 첫 문자는 소문자입니다. 귀하의 경우, List<EditText> List을 선언 할 때 회원 이름으로 List 클래스의 이름이 있습니다. 한번보세요 here

관련 문제