Настойчивость данных в Android

Хорошие уважаемые, я создаю app, где в первом activity я делаю фильтр районов страны и потом перемещаю их из-за putextra в следующую активность, где я называю webservice с соответствующим фильтром для того, чтобы он принес правильные данные, следующую за этим, кликнув в выданном списке открывается другая активность с деталью статьи clickeado, но вернувшись в список, говорит мне, что putextra приходит пустота, теряются данные, которые приходили из фильтра первой активности, я надеюсь быть просветом.

Первый activity, послал фильтр

if (position == 0) {
                Intent intent = new Intent(Turismo.this,Contrato.class);
                intent.putExtra("region",spinnerRegion.getSelectedItemPosition());
                intent.putExtra("grilla",position);
                startActivity(intent);

Во второй я это получаю и позже называю Веб service, до там все добро. я наполняю recyclerview для вида.

 Intent intent = getIntent();
    Bundle extra = intent.getExtras();
    datoregion = (String)extra.get("region").toString();
    String datgrilla = (String)extra.get("grilla").toString();

в третьей активности я показываю деталь, которая приносит Веб service.

nombre.setText(getIntent().getStringExtra("nombre"));
    descripcion.setText(getIntent().getStringExtra("descripcion"));
    Picasso.with(context).load(getIntent().getStringExtra("imagen_public")).into(imageView);

вернувшись третьей активности у меня появляется ошибка

java.lang. NullPointerException: Виртуальный Attempt to invoke method 'java.lang. Object android.os. Bundle.get (java.lang. String)' on в null object reference

Я поспорил на sharepreferences, но nose, где размещать это. Перед рукой большое спасибо.

2
задан 30.12.2016, 22:59
2 ответа

Сохраняй стоимость bundle посредством mГ©todo onSaveInstanceState () : Ты сможешь получать

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
 super.onSaveInstanceState(savedInstanceState);
      // El bundle sera guardado y enviado al onCreate() de la Activity.
      savedInstanceState.putString("region", valorRegion);
      savedInstanceState.putString("grilla", valorGrilla);
    }

Из этой формы снова в активности, посредством onRestoreInstanceState (), ты можешь возвращать стоимость:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // Restore UI state from the savedInstanceState.

  String valorRegion = savedInstanceState.getString("region");

String valorGrilla = savedInstanceState.getString("grilla");

} 
2
ответ дан 24.11.2019, 13:50
  • 1
    мне удается сохранять их в onSaveInstanceState, но вернувшись, я остаюсь null снова: ( – Aldo Gallardo 15.07.2016, 23:01
  • 2
    Санкционируй, если bundle недействительный, не получайте стоимость, ты можешь получать стоимость в onRestoreInstanceState () – Jorgesys♦ 15.07.2016, 23:44

Ты можешь использовать sharedPreferences, чтобы хранить данные:

//de esta manera obtienes los datos del SharedPreferences.
SharedPreferences datos = getSharedPreferences("datos", 0);
String datoregion = datos.getString("region","null");
String datgrilla = datos.getString("grilla","null");

//de esta manera insertas los datos
SharedPreferences.Editor editor = datos.edit();
editor.putString("region", valorRegion);
editor.putString("grilla", valorGrilla);
editor.commit();

sharedpreferences был бы документом текста, который берется за то, чтобы поддерживать данные в памяти telГ©fono.

0
ответ дан 24.11.2019, 13:50

Теги

Похожие вопросы