如何在页面之间传递对象,从当前页面到上一页面

时间:2017-11-30 04:56:51

标签: java android class android-intent

您好我无法将当前页面中的对象传递到上一页这里是我的代码:

第一页:

btnAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, AddContactActivity.class);
            intent.putExtra("contact", contacts);
            startActivityForResult(intent, CONTENT_CODE_ADD);
        }
    });

和此:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CONTENT_CODE_ADD){
        if(resultCode == 2){
            Intent intent = getIntent();
            Bundle args = intent.getBundleExtra("BUNDLE");
            if(args != null) {
                contacts = (ArrayList<Contact>) args.getSerializable("ARRAYLIST");

                empty.setText(contacts.get(0).getName().toString());
            }
        }
    }
}

第二页:

contact = new Contact();
            contact.setName(editName.getText().toString());
            maarakhContact = new ArrayList<>();

            Intent intent = new Intent();
            Bundle args = new Bundle();
            args.putSerializable("ARRAYLIST",(maarakhContact));
            intent.putExtra("BUNDLE",args);
            setResult(2, intent);
            finish();

1 个答案:

答案 0 :(得分:-2)

通常当你启动一个活动并等待结果时,会在intent中获得结果。移动创建新意图并使用意图数据。

编辑:另请注意,由于第二个活动中的此行,您尝试传入的arraylist为空。

  

maarakhContact = new ArrayList&lt;&gt;();

在第二个屏幕中进行这些更改

    contact = new Contact();
    contact.setName(editName.getText().toString());
    maarakhContact = new ArrayList<>();

    //Add the contact class to arraylist
    maarakhContact.add(contact);

    Intent intent = new Intent();
    intent.putExtra("mylist", maarakhContact);
    setResult(2, intent);
    finish();

在第一项活动中

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CONTENT_CODE_ADD){
            if(resultCode == 2){


                ArrayList<Contact> myList = (ArrayList<Contact>) data.getSerializableExtra("mylist");
                if(myList != null) {

            empty.setText(myList.get(0).getName().toString());
                }
            }
        }
    }