-2

ユーザーがログインして「ログイン状態を維持する」のチェックボックスにチェックを入れると、アクティビティは多くの EditText を持つ別のアクティビティに進みます。ただし、ユーザーが誤ってデバイスを閉じたりシャットダウンしたりした場合、ユーザーが「ログイン状態を維持する」にチェックを入れているため、そのアプリケーションに戻ったときにデータが取得されます。onSaveInstanceState と onRestoreInstanceState を使用しましたが、役に立ちません。これで私を助けてください。

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    final EditText txt_Fname = (EditText) findViewById(R.id.txt_Fname);
    final EditText txt_Mname = (EditText) findViewById(R.id.txt_Mname);
    final EditText txt_Lname = (EditText) findViewById(R.id.txt_Lname);
    final EditText txt_Suffix = (EditText) findViewById(R.id.txt_Suffix);

    String Fname = txt_Fname.getText().toString();
    String Mname = txt_Mname.getText().toString();
    String Lname = txt_Lname.getText().toString();
    String Suffix = txt_Suffix.getText().toString();

    outState.putString("shared_fname", Fname);
    outState.putString("shared_mname", Mname);
    outState.putString("shared_lname", Lname);
    outState.putString("shared_suffix", Suffix);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    final EditText txt_Fname = (EditText) findViewById(R.id.txt_Fname);
    final EditText txt_Mname = (EditText) findViewById(R.id.txt_Mname);
    final EditText txt_Lname = (EditText) findViewById(R.id.txt_Lname);
    final EditText txt_Suffix = (EditText) findViewById(R.id.txt_Suffix);

    txt_Fname.setText(savedInstanceState.getString("shared_fname"));
    txt_Mname.setText(savedInstanceState.getString("shared_mname"));
    txt_Lname.setText(savedInstanceState.getString("shared_lname"));
    txt_Suffix.setText(savedInstanceState.getString("shared_suffix"));
}
4

1 に答える 1

-1

アクティビティを切り替えてアプリケーションをシャットダウンするときは、SharedPreference を使用してデータを保存します。以下はメソッドの例で、onCreate() と onDestroy() の間に呼び出すことができます。

void saveText() {
    sPref = getPreferences(MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString(SAVED_TEXT, etText.getText().toString());
    ed.commit();
    Toast.makeText(this, "Text saved", Toast.LENGTH_SHORT).show();
  }

  void loadText() {
    sPref = getPreferences(MODE_PRIVATE);
    String savedText = sPref.getString(SAVED_TEXT, "");
    etText.setText(savedText);
    Toast.makeText(this, "Text loaded", Toast.LENGTH_SHORT).show();
  }
于 2013-08-05T06:08:15.900 に答える