【发布时间】:2021-02-24 12:20:45
【问题描述】:
我将一个字符串从活动 A 传递到活动 B,并在活动 B 中使用传递的字符串。
将数据从 A 传递到 B 的代码(data 是一个字符串。但为了消除任何疑问,我也在使用 toString()):
Intent intent = new Intent(this,Class.forName("com.example.mylibrary.BActivity"));
intent.putExtra("user",data.toString());
startActivityForResult(intent,1);
在活动B中获取传递数据的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
String text = getIntent().getStringExtra("user");
System.out.println(text);
TextView textView = (TextView)findViewById(R.id.textView4);
textView.setText(text);
Intent intent = new Intent();
setResult(RESULT_OK, intent);
}
错误:
但是字符串text 的值是Intent { (has extras) }。这是在控制台和应用程序屏幕上为活动 B 打印的内容,因为 text 被放入 textView4。 text 的预期值应该是用户在上次活动中输入的字符串。谁能告诉我为什么getIntent().getStringExtra("user"); 不返回传递的实际字符串而是Intent { (has extras) }?App screen
System.out.println(text) 的控制台输出
V/FA: onActivityCreated
I/System.out: Intent { (has extras) }
V/FA: Activity resumed, time: 7152294
D/EGL_emulation: eglMakeCurrent: 0xef57f8e0: ver 2 0 (tinfo 0xe43eef50)
【问题讨论】:
-
传递硬编码值,如 Intent intent = new Intent(this, BActivity.class); intent.putExtra("用户", "用户价值");开始活动(意图);
-
并注释这 2 行 Intent intent = new Intent(); setResult(RESULT_OK, 意图);
-
intent.putExtra("user",data.toString());数据是什么类型?我认为它是 Intent 类型的?
-
输入硬编码值让我意识到它实际上工作正常。我有两个“数据”变量,我假设另一个是这个“数据”。感谢@Pavya 的建议,很抱歉这个愚蠢的问题。
-
@Shrikant 是的,我使用的
data变量属于 Intent 类型。我正在用完全不同的功能编写代码。
标签: android android-intent android-activity