Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-从活动到另一个活动并返回的字符串值_Java_Android_Android Intent_Android Activity_Android Contacts - Fatal编程技术网

Java Android-从活动到另一个活动并返回的字符串值

Java Android-从活动到另一个活动并返回的字符串值,java,android,android-intent,android-activity,android-contacts,Java,Android,Android Intent,Android Activity,Android Contacts,我有一个带有按钮列表的对话框。 当我按下一个按钮时,会创建另一个对话框,其中包含编辑文本和一个按钮,用于访问手机的联系人列表并选择要发送短信的联系人 SMS的正文取决于第一个对话框中按下的按钮。 问题是,当我从Contacts活动返回时,我不知道按下了哪个按钮,因此我无法构建作为SMS主体的字符串 我试过这个: Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); intent

我有一个带有按钮列表的对话框。 当我按下一个按钮时,会创建另一个对话框,其中包含编辑文本和一个按钮,用于访问手机的联系人列表并选择要发送短信的联系人

SMS的正文取决于第一个对话框中按下的按钮。 问题是,当我从Contacts活动返回时,我不知道按下了哪个按钮,因此我无法构建作为SMS主体的字符串

我试过这个:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
intent.putExtra("str", string);     // 'string' will be the SMS body
startActivityForResult(intent, 1);

.
.
.
. 

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);

    switch (reqCode) {
        case (1) :
            if (resultCode == Activity.RESULT_OK) {
               .
               .
               .
               String str = data.getStringExtra("str");   // returns NULL
               .
               .
               .
            }
            break;
    }
}
但是这个返回NULL

我该怎么做

编辑-这是我创建第二个对话框的方式
当用户在活动中按下按钮时,您需要在完成活动之前调用setResult并提供一个捆绑包

例如:

Intent resultIntent = new Intent();
resultIntent.putExtra("str", "String"); 
setResult(Activity.RESULT_OK, resultIntent);
finish();
-编辑- 现在我理解了你的问题,你想要的是调用selectcontacts活动,当你收到你的请求和回调时,你就有了信息


您的解决方案是只在活动中创建一个字段。将被调用的活动是调用的人。您需要确保的是,如果活动因内存不足而被终止,则持久化此字段。要做到这一点,只需实现onSaveInstanceBundle并将信息返回到活动的onCreate中。

看看这个答案:也许这会对您有所帮助嗨,我从您的问题中解释的是,您希望突出显示按钮,以便用户知道此特定按钮已被选中,对吗?在这种情况下,为什么不简单地改变一个按钮的背景,在对话框的onClick中,不要关闭对话框,这样它仍然会在那里?但是我如何使用它呢?我想更改的结果是联系人列表活动的结果,但如果我以某种方式更改了该结果,则会丢失用户选择的联系人
Intent resultIntent = new Intent();
resultIntent.putExtra("str", "String"); 
setResult(Activity.RESULT_OK, resultIntent);
finish();