ошибка android.content.Intent.getExtras()’ при нулевой ссылке на объект

#java #android

#java #Android

Вопрос:

Существует проблема с моим приложением для Android. Мне нужно создать массив разных домов с 4 или 5 атрибутами:

Попытка вызвать виртуальный метод ‘android.os.Bundle android.content.Intent.getExtras()’ при нулевой ссылке на объект

 public class ViviendasClass implements Serializable {

public static final Object Viviendas = new Vivienda[1].clone();
Bundle parametros = this.getIntent().getExtras();

private Intent getIntent() { return null;  }

String nVivienda;
int mVivienda;
String desVivienda;
String dirVivienda;
float pVivienda;
String urlVivienda;

int numVivienda = 5;
int start = 0;

class Vivienda{
    String NombreVivienda;
    int medidasVivienda;
    String DescripcionVivienda;
    String DireccionVivienda;
    float PrecioVivienda;
    String urlFotoVivienda;
}

public Vivienda nuevaVivienda(){

    Vivienda vn = new Vivienda();
    vn.NombreVivienda = nVivienda;
    vn.medidasVivienda = mVivienda;
    vn.DescripcionVivienda = desVivienda;
    vn.DireccionVivienda = dirVivienda;
    vn.PrecioVivienda = pVivienda;
    vn.urlFotoVivienda = urlVivienda;
    viviendas.add(vn);
    return vn;
}

ArrayList<Vivienda> viviendas = new ArrayList<Vivienda>();

public void ViviendasClass(String args[])
{

    //Primera vivienda
    Vivienda v1 = new Vivienda();
    v1.NombreVivienda = "Casa en venta en Cabrils";
    v1.medidasVivienda = 92;...
  

Комментарии:

1. Можете ли вы показать класс activity

2. Сначала всегда получайте пакеты намерений в Fragment или Activity , а не в Java классе. Во- вторых , он возвращает null из-за строки private Intent getIntent() { return null; } . Вы создали метод getIntent() в своем коде и возвращаете значение null, а this.getIntent().getExtras(); эта строка ссылается на созданный вами метод, который всегда возвращает значение null . Удалите this из строки this.getIntent().getExtras(); , и она будет работать, и нет необходимости создавать метод getIntent() .

Ответ №1:

   // ExampleClass is your model class which implements Serializable 
 ExampleClass object = new ExampleClass ();
  // using context and next component class to create intent
 Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
 intent.putExtra(“serialize_data”, object);
 startActivity(intent);


 // Accessing the data passed in other Activity
  public class SecondActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
 // Using getSerializableExtra(String key) method
 ExampleClass object = (ExampleClass) getIntent().getSerializableExtra("serialize_data");
  }
 }
  

Ответ №2:

Возврат метода GetIntent() null . Реорганизуйте его примерно так

 private Intent getIntent() { 
    Intent intent = new Intent();
    intent.putExtra("KEY_FOR_EXTRA", yourSerilizableModelThatYouTryingToPass);
    return intent;
}