简体   繁体   English

通过意图返回字符串的ArrayList时,我得到空值

[英]When Returning an ArrayList of Strings Via Intent I Get null Value

I am making a mailing app. 我正在制作一个邮件应用程序。 What I want to do is open list chooseContactsActivity from composeMailActivity , select some contacts and click add to send them back to composeMailActivity . 我想要做的是打开列表,从composeMailActivity中选择 ContactsActivity” ,选择一些联系人,然后单击“添加”以将其发送回composeMailActivity First thing I did was that standard passing between activities where I passed a string , and the correct string was passed and recognized in composeMailActivity . 我要做的第一件事是在活动之间传递了一个string ,并且在composeMailActivity传递并识别了正确的string ,从而实现了标准传递。 Then I added arrayList of strings - of contact ids. 然后,我添加了strings arrayList联系人ID。 In chooseContactsActivity it is recognized correctly when debugging, but in the composeMailActivity it returns null . chooseContactsActivity它被正确识别调试时,但在composeMailActivity它返回null

Some of the answers I tried include: 1 , 2 , 3 , 4 , 5 ... 一些我试过的答案包括: 12345 ...

ChooseContactsActivity: 选择联系人活动:

addButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            ArrayList<String> selectedIds = adapter.selectedIds;

            String text = "abc";

            Intent intent = new Intent();
            intent.putStringArrayListExtra("contacts_added", selectedIds);
            setResult(RESULT_OK, intent);
            finish();
        }
});

ComposeMailActivity: ComposeMailActivity:

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            ArrayList<String> get_contacts = getIntent().getExtras().getStringArrayList("contacts_added");
        }
    }
}

I think try to get "contacts_added" form "data". 我认为尝试从“数据”中获取“ contacts_added”。 Instead of calling getIntent() try 而不是调用getIntent()尝试

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            ArrayList<String> get_contacts = data.getExtras().getStringArrayList("contacts_added");
        }
    }
}

Hope this will solve your problem. 希望这能解决您的问题。

You should use the data Intent in onActivityResult(int requestCode, int resultCode, Intent data) instead of getIntent() like this 您应该在onActivityResult(int requestCode, int resultCode, Intent data)使用data Intent ,而不是像这样的getIntent()

if (resultCode == RESULT_OK) {
            ArrayList<String> get_contacts = data.getExtras().getStringArrayList("contacts_added");
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM