Я пытаюсь создать приложение для Android, в этом приложении я отправил данные из Первой операции во Вторую активность. Во второй деятельности я использую этот кодКак сохранить нужные данные в EditText с помощью методов onSaveInstanceState() и onRestoreInstanceState()
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
, чтобы сохранить данные, когда приложение переходит в ландшафт в портретном режиме, но в моем приложение, даже я использую оба эти, но данные не сохраняются. При вращении данные становятся уничтоженными, а приложение имеет вид EditText
.
Пожалуйста, проверьте код, приведенный ниже, дают советы, где я делаю ошибку, чтобы сохранить данные
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText name,age;
TextView text_name,text_age;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name=(EditText) findViewById(R.id.name);
age=(EditText) findViewById(R.id.age);
text_name=(TextView) findViewById(R.id.name_edit);
text_age=(TextView) findViewById(R.id.name_age);
btn=(Button) findViewById(R.id.click);
//Button Click to send data to another activity
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle bundle=new Bundle();
String user_name=name.getText().toString();
String user_age=age.getText().toString();
bundle.putString("UName",user_name);
bundle.putString("UAge",user_age);
Intent intent=new Intent(MainActivity.this,SecondClass.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
SecondClass.java
public class SecondClass extends Activity {
EditText name,age;
TextView text_name,text_age;
String namer,ager;
private String savedName,savedAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity_layout);
name=(EditText) findViewById(R.id.name);
age=(EditText) findViewById(R.id.age);
text_name=(TextView) findViewById(R.id.name_edit);
text_age=(TextView) findViewById(R.id.name_age);
if (savedInstanceState!=null)
{
savedInstanceState.get(savedName);
name.setText(savedName);
savedInstanceState.get(savedAge);
age.setText(savedAge);
}
if (savedInstanceState==null)
{
Intent i=getIntent();
Bundle bundle=i.getExtras();
namer=bundle.getString("UName");
name.setText(namer);
ager=bundle.getString("UAge");
age.setText(ager);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(savedName,namer);
outState.putString(savedAge,ager);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState!=null)
{
savedInstanceState.get(savedName);
name.setText(savedName);
savedInstanceState.get(savedAge);
age.setText(savedAge);
}
if (savedInstanceState==null)
{
Intent i=getIntent();
Bundle bundle=i.getExtras();
namer=bundle.getString("UName");
name.setText(namer);
ager=bundle.getString("UAge");
age.setText(ager);
}
}
}
попробуйте подвигать 'super.onSaveInstanceState (outState),' после этого заявления 'outState.putString (savedAge, Агер);' –