私は現在、バッテリー残量などの特定のイベントに基づいて電話の状態を自動的に変更するAndroidアプリを開発中です。私は3つの主要なパラメータ、名前、イベントと状態(イベントと状態は2つの他のカスタムクラスです)を持っているProfileクラスを持っていますなぜObjectOutputStream.writeObject()はIOExceptionをスローしますか?
私のProfileEditクラスでは、EditTextやSpinnerなどの様々なコンポーネントがあります。 。各プロファイルを表示するListActivityクラスのArrayListと、現在のArrayListを取得して新しいプロファイルを追加する、または更新するProfileEditクラスへのアクセスが必要です。
私が最初にやったのは、ObjectOutputStreamを使ってArrayListを電話機のSDカードに書き込んだ後、それを必要とするクラスで取り出すことでした。しかしこれまでの私の試みは、IOExceptionをスローすることに終わりました。私のコードは次のとおりです。
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("/sdcard/profile.prof"));
oos.writeObject(profiles);
oos.flush();
oos.close();
プロファイルオブジェクトはファイルに書き込まれるmyListです。なぜこれが例外をスローしているのかわかりません。 writeObject( "Hello")を呼び出してオブジェクトを文字列に変更しようとしました。それはもはや例外を投げなかったので、私はArrayListの問題だけを想定することができます。私はArrayListクラスがserializableを実装していて、Profileクラスもserializableを実装しているという印象を受けましたが、同じことはしませんでした。
また、ProfileList(ListActivity)クラスとProfileEditクラスの両方に同じArrayListへのアクセスを許可するより良い方法がある場合は、教えてください。
編集:ここでIO例外がスタックトレースです:(ProfileEditクラスのライン114のwriteObject()ラインである)
EZSettings(14788): IO Exception
EZSettings(14788): java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
EZSettings(14788): java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
EZSettings(14788): java.util.ArrayList.writeObject(ArrayList.java:651)
EZSettings(14788): java.lang.reflect.Method.invokeNative(Native Method)
EZSettings(14788): java.lang.reflect.Method.invoke(Method.java:507)
EZSettings(14788): java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1219)
EZSettings(14788): java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
EZSettings(14788): java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
EZSettings(14788): com.ezstatechanger.ProfileEdit.saveState(ProfileEdit.java:114)
EZSettings(14788): com.ezstatechanger.ProfileEdit.access$0(ProfileEdit.java:80)
EZSettings(14788): com.ezstatechanger.ProfileEdit$1.onClick(ProfileEdit.java:72)
EZSettings(14788): android.view.View.performClick(View.java:2538)
EZSettings(14788): android.view.View$PerformClick.run(View.java:9152)
EZSettings(14788): android.os.Handler.handleCallback(Handler.java:587)
EZSettings(14788): android.os.Handler.dispatchMessage(Handler.java:92)
EZSettings(14788): android.os.Looper.loop(Looper.java:123)
EZSettings(14788): android.app.ActivityThread.main(ActivityThread.java:3691)
EZSettings(14788): java.lang.reflect.Method.invokeNative(Native Method)
EZSettings(14788): java.lang.reflect.Method.invoke(Method.java:507)
EZSettings(14788): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
EZSettings(14788): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
EZSettings(14788): dalvik.system.NativeStart.main(Native Method)
IOExceptionのメッセージは何ですか? – jprofitt
こんにちはjdprofit、私は元の質問にスタックトレースを追加しました。ありがとう。 –