Было предложено использовать parcelable для моего проекта класса Android.Я хотел иметь рабочее понимание этого прежде, чем я реализовал это в своем коде.У меня возникают трудности с запуском этого примера, я перечислил ошибку при запуске программы
**Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.shawn.nichol.parcelabletest.Person.toString()' on a null object reference
atcom.shawn.nichol.parcelabletest.SecondActivity.onCreate(SecondActivity.java:20**)
Любая помощь будет принята с благодарностью, вот уже 10 часов.
MainActivity
public class MainActivity extends AppCompatActivity {
static String NAME_KEY = "NAME;";
static String AGE_KEY = "AGE";
static String USER_KEY = "USER";
static String PERSON_KEY = "PERSON";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra(PERSON_KEY, new Person("Alice Smith", 25.0,
"Calgary"));
startActivity(intent);
}
}
Person (Parcelable)
public class Person implements Parcelable {
String name;
Double age;
String city;
public Person(String name, double age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", city='" + city + '\'' +
'}';
}
protected Person(Parcel in) {
this.name = in.readString();
this.age = in.readDouble();
this.city = in.readString();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel parcel) {
return null;
}
@Override
public Person[] newArray(int i) {
return new Person[0];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(this.name);
parcel.writeDouble(this.age);
parcel.writeString(this.city);
}
}
SecondActivity
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent i = getIntent();
Person person =
getIntent().getExtras().getParcelable(MainActivity.PERSON_KEY);
if(getIntent() != null && getIntent().getExtras() != null) {
Log.d("Nichol", "Second activity " + person.toString());
}
}
}