0

Я пытаюсь создать приложение для 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); 
 
     } 
 

 
    } 
 
}

+0

попробуйте подвигать 'super.onSaveInstanceState (outState),' после этого заявления 'outState.putString (savedAge, Агер);' –

ответ

0

Вы кладете и получить значение сохраненного экземпляра с помощью ключа, и первым поместить данные в 'outState', то называют "

super.onSaveInstanceState (outState);

попробовать это:

public class SecondClass extends Activity { 
 
    private static final String SAVED_NAME="savedName"; 
 
    private static final String SAVED_AGE="savedAge"; 
 
    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) 
 
     { 
 
      namer = savedInstanceState.get(SAVED_NAME); 
 
      name.setText(namer); 
 
      ager = savedInstanceState.get(SAVED_AGE); 
 
      age.setText(ager); 
 
     } 
 
     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) { 
 
     outState.putString(savedName,namer); 
 
     outState.putString(savedAge,ager); 
 
     super.onSaveInstanceState(outState); 
 
     
 
    } 
 

 
    @Override 
 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
 
     super.onRestoreInstanceState(savedInstanceState); 
 
     if (savedInstanceState!=null) 
 
     { 
 
      namer = savedInstanceState.get(SAVED_NAME); 
 
      name.setText(namer); 
 
      ager = savedInstanceState.get(SAVED_AGE); 
 
      age.setText(ager); 
 
     } 
 
     if (savedInstanceState==null) 
 
     { 
 
      Intent i=getIntent(); 
 
      Bundle bundle=i.getExtras(); 
 
      namer=bundle.getString("UName"); 
 
      name.setText(namer); 
 
      ager=bundle.getString("UAge"); 
 
      age.setText(ager); 
 
     } 
 

 
    } 
 
}

+0

@Hamideza, Спасибо, что ответили – sreeku24