現在、バッテリー レベルなどの特定のイベントに基づいて電話の状態を自動的に変更する Android アプリに取り組んでいます。名前、イベント、状態の 3 つの主要なパラメーターを持つプロファイル クラスがあります (イベントと状態は他の 2 つのカスタム クラスです)。
私の ProfileEdit クラスには、ユーザーがプロファイルを構成するための EditText や Spinner などのさまざまなコンポーネントがあります。各プロファイルを表示する ListActivity クラスの Profile タイプの ArrayList と、現在の ArrayList を取得して新しいプロファイルを追加または更新する ProfileEdit クラスにアクセスする必要があります。
最初にこれを行う必要があったのは、ObjectOutputStream を使用して ArrayList を電話の SD カードに書き込むことでした。その後、それを必要とする任意のクラスで取得できます。ただし、これまでにこれを実行しようとすると、IOException がスローされるだけです。私のコードは次のとおりです。
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("/sdcard/profile.prof"));
oos.writeObject(profiles);
oos.flush();
oos.close();
プロファイル オブジェクトは、ファイルに書き込まれる ArrayList です。これが例外をスローする理由がわかりません。writeObject("Hello"); を呼び出して、オブジェクトを文字列に変更しようとしました。例外がスローされなくなったため、ArrayList に問題があるとしか考えられません。ArrayList クラスは serializable を実装し、私の Profile クラスも serializable を実装しているという印象を受けましたが、なくても同じことを行います。
または、ProfileList (ListActivity) クラスと ProfileEdit クラスの両方に同じ ArrayList へのアクセスを許可するより良い方法がある場合は、お知らせください。
編集: IO Exceptions スタック トレースは次のとおりです: (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)