0

オブジェクト(カスタム)をファイルに保存できませんでした。

私のアプリのプロセスは、オブジェクト onPause() を保存し、オブジェクト onResume() を取得することです。

1) I have two activities (Activity A and Activity B)
2) I am saving and reading the object in Activity A 
3) Activity A call Activity B on Button click.

私の問題を再現する手順は次のとおりです: (アクティビティ A は、ファイルからオブジェクトを読み取ることによって起動します。)

1) Click on button on Activity A.
2) Save custom object to file in onPause method of Activity A.
3) Activity B launches
4) Click on Action bar back button.
5) Read the object from file saved in onResume() method of Activity A.
6) Again click on the button on Activity A.
7) Saves custom object to file in onPause() method of Activity A.
8) Activity B launches.
9) Click on back button of device.
10) Tries to read the object from file in onResume() method of Activity A.

注意: 保存および読み取り中のファイルは同じ場所にあります。

ここで、ステップ 10 で読み取ったオブジェクトが正しくありません。ステップ 7 にあると思われますが、オブジェクトが正しく保存されていません。

オブジェクトをファイルに保存し、ファイルをオブジェクトに読み取るのを手伝ってくれる人はいますか?

私が間違っている場合は修正してください。Android のドキュメントによると、 onSaveInstanceState() と onRestoreInstanceState() は保存するのに適した方法ではありません。

ここにマニフェストがあります:

    <activity
        android:name=".ActivityA"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name"
        >
    </activity>
    <activity
        android:name=".ActivityB"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/app_name" >
    </activity>

オブジェクトの保存と読み込み (ActivityA):

Customer customer;
@Override
protected void onPause() {
    super.onPause();
    save(customer);
}

@Override
protected void onResume() {
    super.onResume();
    customer = read();
}

  private void save(Customer customer) {
    try {
        FileOutputStream fileOutputStream = openFileOutput("Customer.properties", Context.MODE_PRIVATE);
        Properties properties = new Properties();
        properties.put("CUSTOMER_NAME", customer.getName());
        properties.put("CUSTOMER_ID", customer.getId());
        properties.put("CUSTOMER_PLACE", customer.getPlace());

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

     private Customer read() {
     try {
          FileInputStream fileInputStream = openFileInput("customer.properties");
          Properties properties = new Properties();
          properties.load(fileInputStream);
          Customer customer = new Customer();
          customer.setName(properties.get("CUSTOMER_NAME"));
          customer.setId(properties.get("CUSTOMER_ID"));
          customer.setPlace(properties.get("CUSTOMER_PLACE"));
          return customer;
     } catch(Exception e) {
     }
   return null;
  }
4

2 に答える 2