Android 如何将一个活动中的自定义数组列表传递给另一个活动
我有一个todolist应用程序,无法将一个活动中的customlist传递给另一个活动。我使用数据包装器,但当我单击“添加”按钮时,程序会给出nullpointerexception 这是AddItem.javaAndroid 如何将一个活动中的自定义数组列表传递给另一个活动,android,Android,我有一个todolist应用程序,无法将一个活动中的customlist传递给另一个活动。我使用数据包装器,但当我单击“添加”按钮时,程序会给出nullpointerexception 这是AddItem.java okButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { ArrayList<Ent
okButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ArrayList<Entry> itemList = new ArrayList<Entry>();
task = editText1.getText().toString();
priorityLevel = spinner.getSelectedItem().toString();
status = toggleButton.getText().toString();
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth() + 1;
int year = datePicker.getYear();
date = day + "/" + month + "/" + year;
itemList.add(new Entry(task, priorityLevel, date, status));
Intent okIntent = new Intent();
okIntent.putExtra("item",new DataWrapper(itemList));
setResult(Activity.RESULT_OK, okIntent);
finish();
}
});
okButton.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
ArrayList itemList=新建ArrayList();
task=editText1.getText().toString();
priorityLevel=spinner.getSelectedItem().toString();
status=toggleButton.getText().toString();
int day=datePicker.getDayOfMonth();
int month=datePicker.getMonth()+1;
int year=datePicker.getYear();
日期=日+“/”+月+“/”+年;
添加(新条目(任务、优先级、日期、状态);
Intent=newintent();
putExtra(“item”,新的数据包装器(itemList));
设置结果(Activity.RESULT_OK,okinent);
完成();
}
});
和MainActivity.java
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case ADD_NOTE:
Log.w("1", "one");
DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("item");
Log.w("2", "two");
entryList = dw.getEntryList();
Log.w("3", "three");
//String extraName = AddItem.code;
//ArrayList<Entry> list = data.getParcelableArrayListExtra(extraName);
todoItems.addAll(entryList);
Log.w("4", "four");
todoArrayAdapter.notifyDataSetChanged();
Log.w("5", "five");
break;
activityresult上受保护的void(int-requestCode、int-resultCode、Intent-data){
if(resultCode==Activity.RESULT\u确定){
开关(请求代码){
案例补充说明:
Log.w(“1”、“1”);
DataWrapper dw=(DataWrapper)getIntent().getSerializableExtra(“项”);
Log.w(“2”、“2”);
entryList=dw.getEntryList();
Log.w(“3”、“3”);
//字符串extraName=AddItem.code;
//ArrayList=data.getParcelableArrayListExtra(外部名称);
todoItems.addAll(entryList);
Log.w(“4”、“4”);
ToDoarayAdapter.notifyDataSetChanged();
Log.w(“5”、“5”);
打破
ArrayList实现可序列化
你可以使用意图
ArrayList<String> mylist = new ArrayList<String>();
Intent intent = new Intent(ActivityName.this, Second.class);
intent.putStringArrayListExtra("key", mylist);
startActivity(intent);
ArrayList mylist=new ArrayList();
意向意向=新意向(ActivityName.this,Second.class);
intent.putStringArrayListExtra(“键”,mylist);
星触觉(意向);
取回
Intent i = getIntent();
ArrayList<String> list = i.getStringArrayListExtra("key");
Intent i=getIntent();
ArrayList=i.getStringArrayListExtra(“键”);
实现可包裹界面。更换
DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("item");
与
在onActivityResult()中,…如果条目是可序列化对象,则可以使用intent.putExtra(字符串,可序列化)。检查文档您的条目和数据包装类必须实现Parcelable或serializable(建议使用Parcelable)是的,Entry和DataWrapper类都是可序列化的。ı使用此行okinent.putExtra(“item”,newdatawrapper(itemList));是不是错了?
DataWrapper dw = (DataWrapper) data.getSerializableExtra("item");