2011-07-05 8 views
2

EditTextのArrayLists(ArrayOne、ArrayTwo、およびArrayThree)を内部ストレージに保存しようとしています。コメントとして、それは明らかにそれが保存しようとしていることを示していますが、それ以降は別のTOASTを得ることはありません。 「保存が完了しました」または何らかのエラーが表示されない理由の助けを借りてください。ちょうどデバッグの目的のためにあなたは、一般的な例外をキャッチし、スタックトレースをプリントアウト可能性 -Android内部オブジェクトストレージ

public void save(Context c) 
{ 
    String fileName; 
    Toast.makeText(this, "Attempting Save", Toast.LENGTH_SHORT).show();//THIS SHOWS 
    if(semester.getText().toString().length() == 0) 
    { 
     Toast.makeText(c, "Please enter a filename", Toast.LENGTH_SHORT).show(); 
    } 
    else 
    { 
     fileName = "test.dat"; 
     FileOutputStream fos = null; 
     ObjectOutputStream oos = null; 
     try 
     { 
      fos = this.openFileOutput(fileName, Context.MODE_PRIVATE); 
      oos = new ObjectOutputStream(fos); 
      oos.writeObject(ArrayOne); 
      oos.writeObject(ArrayTwo); 
      oos.writeObject(ArrayThree); 
      Toast.makeText(c, "Save Completed", Toast.LENGTH_SHORT).show(); //THIS NEVER SHOWS 
     } 
     catch (FileNotFoundException e) 
     { 
      Toast.makeText(c, "Could not find " + fileName + " to save.", Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      try 
      { 
       if (oos != null) 
        oos.close(); 
       if (fos != null) 
        fos.close(); 
      } 
      catch (Exception e) 
      { /* do nothing */ } 
     } 
    } 
} 
+0

こんにちは、デバッグを試しましたか?それは "見つけることができませんでした"と表示されますか? – PedroAGSantos

+0

デバッグを試みましたが、「保存しようとしました」の後に何も表示されません。私はそこからコードがどこに行くのか分かりません。 – Andrew

+0

デバッグを試してください。あなたがそれをデバッグするなら、あなたはこれを解決するために他の人の助けを必要としません。あなたのコードがどこに行くのかを追跡してください:) –

答えて

2

問題はのEditTextクラスは、デバッグとのprintStackTrace上にブレークポイントを入れて、IOExceptionが調べると、それは

catch (IOException e 
{ 
    e.printStackTrace(); 
} 

クラスを使用する必要があることを教えてくれます

直列化可能ではないということですEditTextにはないオブジェクトとして書き出されるためには、「Serializableを実装する」。

基本クラスが引き続き例外をスローするため、クラスを拡張して直列化可能なタグを追加することはできません。

私はあなた自身のクラスを介してデータをシリアル化するか、あるいは何か他の方法でやろうとしているものを保存することをお勧めします。

+0

私はちょうどEditTextのテキストを含む文字列のArrayListを作ることができますか?ありがとうございました – Andrew

+0

@Andrew - はい基本型は、シリアル化する必要があります、文字列をシリアル化することができます – Idistic

+0

[OK]を、私は自分のクラスを介してデータをシリアル化する方法を説明するどこかを教えてくれますか? – Andrew

0

私はあなただけにFileNotFoundとIOExceptionがキャッチしているため、エラーがあなたの最初のtryブロックで飲み込んだ人間だと思います。

それはまた、このことができます場合は、私が何をすべきかです:

 
java.io.File file = new java.io.File("/sdcard/mystorage/ArrayOne.bin"); 
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file))); 
out.writeObject(obj); 
out.close(); 

ベスト

-serkan

0

何が「保存しよう」の後に表示されない場合、このブロックでは、いくつかの例外を取得you're

catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 

あなたはどのトーストでも表示していません。また、あなたはあなたの例外を除いて何もしない、このようにここになります

catch (Exception e) 
     { /* do nothing */ } 

代わりにあなたのメッセージを焼くの。.. debbuggingためLogCatを使用しようと、使いやすく、また、あなたはトーストのコードを配置する必要はありませんあなたのコードで。どのように行くのか教えてください。

関連する問題