0

私のアプリには2つのアクティビティがあり、editTextのテキストを保存したいのですが、ユーザーが次に進むときに、ユーザーによって指定され、MainActivityに戻った後、その値をeditTextに配置する必要があります。私のコードは次のとおりです。

public class MainActivity extends Activity {

EditText editText;
String name = null;

@Override
protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText = (EditText) findViewById(R.id.editText1);
    if(savedInstanceState == null){
    editText.setText("Some Thing");
    }else{
        String newValue = savedInstanceState.getString("myData");
        editText.setText(newValue);
    }
    Log.d("ARSHAY....", "in onCreate()");
}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    super.onSaveInstanceState(savedInstanceState);
    editText = (EditText) findViewById(R.id.editText1);
    name = editText.getText().toString();
    savedInstanceState.putString("myData", name);

}


public void goToNextArsh(View view ) {


    Intent intent = new Intent(MainActivity.this, Second.class);
    startActivity(intent);
}
  }

ただし、これはMainActivityに戻ったときに新しい入力を設定しません。誰かがそれを行う方法を知っていますか?

4

2 に答える 2

1

まず、なぜeditText = (EditText) findViewById(R.id.editText1);2回使用しているのですか。でのみ使用onCreate()

このコードを使用します

@Override
protected void onPause() {
    SharedPreferences pref = getSharedPreferences("YOUR_KEY", MODE_PRIVATE);
    Editor edit = pref.edit();
    edit.putString("som.arshay.retreive.data", editText.getText().toString());
    edit.commit();
    super.onPause();
}

@Override
protected void onResume() {
    SharedPreferences pref = getSharedPreferences("YOUR_KEY", MODE_PRIVATE);
    String newValue = pref.getString("som.arshay.retreive.data", "");
    editText.setText(newValue);
    super.onResume();
}
于 2013-02-21T05:48:22.567 に答える
0

これらの方法onSaveInstanceState(Bundle outState)を使用してonRestoreInstanceState(Bundle savedInstanceState)

于 2013-02-21T05:01:18.190 に答える