ナビゲーション中に複数のアクティビティのデータをどのように保存できるかを知りたかったのです。複数のアンドロイドアクティビティでデータを保存する
私のアプリケーションには2種類のフォームがあります。account details
とpersonal details
はそれぞれ独自のアクティビティを使用しています。ユーザーがaccount details
アクティビティのnext
ボタンをクリックすると、アクティビティはpersonal details
になります。 personal details
アクティビティには、ユーザーをaccount details
アクティビティに戻すための戻るボタンがあります。私が欲しいもの
は、ユーザーがnext
ボタンをクリックしたときに、ユーザーがaccount details
活動に戻ったときに、それを表示することができるように、それはaccount details
活動中のデータを保存するということです。また、ユーザがpersonal details
アクティビティにデータを入力し、back
をクリックしてaccount details
アクティビティに戻ると、personal details
アクティビティのデータを保存して、ユーザがpersonal details
アクティビティに再度移動したときに、自分のデータを見つけることができるようにします。
私が行っていることはonActivityResult
メソッドをオーバーライドしていると示されているようaccount details
活動中のデータを保存するためにいくつかのメソッドを追加しました:
package com.example.karyukie.application;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class AccountDetails extends AppCompatActivity {
EditText usernameSignUp, newPwd, confirmPwd, securityA;
Spinner securityQ;
private static final String USERNAME_SIGN_UP = "usernameSignUp_key";
private static final String PWD_SIGN_UP = "pwdSignUp_key";
private static final String SECURITY_Q = "securityQ_key";
private static final String SECURITY_A = "securityA_key";
@Override
protected void onCreate(Bundle savedInstanceState) {
usernameSignUp = (EditText) findViewById(R.id.usernameSignUp_editText);
newPwd = (EditText) findViewById(R.id.newPwd_editText);
confirmPwd = (EditText) findViewById(R.id.confirmPwd_editText);
securityQ = (Spinner) findViewById(R.id.securityQ_spinner);
securityA = (EditText) findViewById(R.id.securityA_editText);
securityQ.setSelection(9);
Button next = (Button) findViewById(R.id.next_button);
assert next != null;
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle accountDetails_data = saveData();
Intent intent = new Intent(getApplicationContext(), PersonalDetails.class);
intent.putExtras(accountDetails_data);
startActivityForResult(intent, 1);
}
}
});
public Bundle saveData() {
String usernameSignUp_value = usernameSignUp.getText().toString();
String pwdSignUp_value = newPwd.getText().toString();
int securityQ_value = securityQ.getSelectedItemPosition();
String securityA_value = securityA.getText().toString();
Bundle data = new Bundle();
data.putString(USERNAME_SIGN_UP, usernameSignUp_value);
data.putString(PWD_SIGN_UP, pwdSignUp_value);
data.putInt(SECURITY_Q, securityQ_value);
data.putString(SECURITY_A, securityA_value);
return data;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1) {
if(resultCode == Activity.RESULT_OK) {
usernameSignUp.setText(data.getStringExtra(USERNAME_SIGN_UP));
newPwd.setText(data.getStringExtra(PWD_SIGN_UP));
confirmPwd.setText(data.getStringExtra(PWD_SIGN_UP));
securityQ.setSelection(data.getIntExtra(SECURITY_Q, 10));
securityA.setText(data.getStringExtra(SECURITY_A));
}
}
}
そしてpersonal details
活動に:
Button back = (Button) findViewById(R.id.back_button);
assert back != null;
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle data = getIntent().getExtras();
Intent intent = new Intent();
intent.putExtras(data);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
それはように見えますうまく動作しますが、前述のようにデータをpersonal details
アクティビティに保存する方法を理解することはできません。
インテントはアクティビティ間でデータを送信するのに適していますが、アプリケーション全体で永続的なストレージのためのオプションがあります。 https://developer.android.com/training/basics/data-storage/index.html –