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