将 parcelables 数组列表传递给不同的 activity?
Passing an array list of parcelables to a different activity?
我有一个 class 胆固醇监测器,它实现了 parcelable。在我的 activity 中,我尝试通过意图将 parcelables 数组列表传递给另一个 activity。我这样初始化我的监视器列表:
private ArrayList<? extends Parcelable> monitor_list;
那我传过去:
monitor_list = patientListFragment.getMonitorList();
Intent intent = new Intent(this, CholesterolMonitorActivity.class);
intent.putParcelableArrayListExtra("monitorList" ,monitor_list);
startActivity(intent);
我的获取监控列表方法returns胆固醇监控器数组列表:
public ArrayList<CholesterolMonitor> getMonitorList(){
return this.monitorList;
}
在我的接收中activity我有两个数组列表,
private ArrayList<? extends Parcelable> monitor_list;
private ArrayList<CholesterolMonitor>cholesterol_monitor;
monitor_list= this.getIntent().getParcelableArrayListExtra("monitorList");
this.cholesterol_monitor = (ArrayList<CholesterolMonitor>) monitor_list;
但是,应用程序在这个活动启动时崩溃了?这是错误日志。
Process: com.example.safeheart, PID: 22778
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List org.hl7.fhir.dstu3.model.Patient.getName()' on a null object reference
at com.example.safeheart.patientList.MonitorListRecyclerAdapter.onBindViewHolder(MonitorListRecyclerAdapter.java:41)
at com.example.safeheart.patientList.MonitorListRecyclerAdapter.onBindViewHolder(MonitorListRecyclerAdapter.java:20)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder
你可以像下面那样做
像下面这样创建 java 对象
public class ClassMyModel implements Serializable {
private ArrayList<CholesterolMonitor> cholesterolMonitorArrayList;
public ArrayList<CholesterolMonitor> getCholesterolMonitorArrayList() {
return cholesterolMonitorArrayList;
}
public void setCholesterolMonitorArrayList(ArrayList<CholesterolMonitor> cholesterolMonitorArrayList) {
this.cholesterolMonitorArrayList = cholesterolMonitorArrayList;
}
}
并在您的 CholesterolMonitor 中实现 Serializable Class 也
public class CholesterolMonitor implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在你的Activity一个
private ArrayList<CholesterolMonitor> cholesterolMonitorArrayList = new ArrayList<>();
CholesterolMonitor test = new CholesterolMonitor();
test.setName("test Name");
cholesterolMonitorArrayList.add(test);
ClassMyModel data = new ClassMyModel();
data.setCholesterolMonitorArrayList(cholesterolMonitorArrayList);
Intent intent = new Intent(SignUpActivity.this, ForgotPwdEmailActivity.class);
intent.putExtra("TEST", data);
startActivity(intent);
在你的 Activity B
if (getIntent() != null) {
classMyModel = (ClassMyModel) getIntent().getSerializableExtra("TEST");
if(classMyModel != null){
System.out.println("Name :: "+ classMyModel.getCholesterolMonitorArrayList().get(0).getName());
}
}
注意:确保 ClassMyModel 的每个嵌套 class 都实现了 Serializable 接口
我有一个 class 胆固醇监测器,它实现了 parcelable。在我的 activity 中,我尝试通过意图将 parcelables 数组列表传递给另一个 activity。我这样初始化我的监视器列表:
private ArrayList<? extends Parcelable> monitor_list;
那我传过去:
monitor_list = patientListFragment.getMonitorList();
Intent intent = new Intent(this, CholesterolMonitorActivity.class);
intent.putParcelableArrayListExtra("monitorList" ,monitor_list);
startActivity(intent);
我的获取监控列表方法returns胆固醇监控器数组列表:
public ArrayList<CholesterolMonitor> getMonitorList(){
return this.monitorList;
}
在我的接收中activity我有两个数组列表,
private ArrayList<? extends Parcelable> monitor_list;
private ArrayList<CholesterolMonitor>cholesterol_monitor;
monitor_list= this.getIntent().getParcelableArrayListExtra("monitorList");
this.cholesterol_monitor = (ArrayList<CholesterolMonitor>) monitor_list;
但是,应用程序在这个活动启动时崩溃了?这是错误日志。
Process: com.example.safeheart, PID: 22778
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List org.hl7.fhir.dstu3.model.Patient.getName()' on a null object reference
at com.example.safeheart.patientList.MonitorListRecyclerAdapter.onBindViewHolder(MonitorListRecyclerAdapter.java:41)
at com.example.safeheart.patientList.MonitorListRecyclerAdapter.onBindViewHolder(MonitorListRecyclerAdapter.java:20)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder
你可以像下面那样做
像下面这样创建 java 对象
public class ClassMyModel implements Serializable {
private ArrayList<CholesterolMonitor> cholesterolMonitorArrayList;
public ArrayList<CholesterolMonitor> getCholesterolMonitorArrayList() {
return cholesterolMonitorArrayList;
}
public void setCholesterolMonitorArrayList(ArrayList<CholesterolMonitor> cholesterolMonitorArrayList) {
this.cholesterolMonitorArrayList = cholesterolMonitorArrayList;
}
}
并在您的 CholesterolMonitor 中实现 Serializable Class 也
public class CholesterolMonitor implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在你的Activity一个
private ArrayList<CholesterolMonitor> cholesterolMonitorArrayList = new ArrayList<>();
CholesterolMonitor test = new CholesterolMonitor();
test.setName("test Name");
cholesterolMonitorArrayList.add(test);
ClassMyModel data = new ClassMyModel();
data.setCholesterolMonitorArrayList(cholesterolMonitorArrayList);
Intent intent = new Intent(SignUpActivity.this, ForgotPwdEmailActivity.class);
intent.putExtra("TEST", data);
startActivity(intent);
在你的 Activity B
if (getIntent() != null) {
classMyModel = (ClassMyModel) getIntent().getSerializableExtra("TEST");
if(classMyModel != null){
System.out.println("Name :: "+ classMyModel.getCholesterolMonitorArrayList().get(0).getName());
}
}
注意:确保 ClassMyModel 的每个嵌套 class 都实现了 Serializable 接口