java - 关于 Android 中 putExtra 方法顺序的奇怪行为

标签 java android

我的应用要求用户输入字符串和颜色,并将其显示在新 Activity 中。 当将字符串和整数从一个 Activity 传输到另一个 Activity 时,我发现如果 int 的 putExtra 低于字符串的 putExtra,则不会显示任何字符串,但如果 int 在顶部,则字符串将显示在具体颜色。

这是损坏的代码:

public void sendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();        
    intent.putExtra(EXTRA_MESSAGE,message);
    intent.putExtra(EXTRA_MESSAGE,colorChoice);
    startActivity(intent);
}

这是工作代码

public void sendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE,colorChoice);
    intent.putExtra(EXTRA_MESSAGE,message);
    startActivity(intent);
}

我尝试切换 other_activity.java 中的 getExtras',但没有任何区别。这是由错误的编码引起的吗?或者它只是语言的怪癖,谢谢

最佳答案

您对这两个项目使用相同的 key 。为 colorChoicemessage 使用不同的键以获得正确的值。

在您的任一 Activity 中有静态常量:

public static final String EXTRA_MESSAGE = "extra_message";
public static final String EXTRA_COLOR_CHOICE = "extra_color_choice";

然后,使用它们来放置值:

Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();        
intent.putExtra(EXTRA_MESSAGE, message);
intent.putExtra(EXTRA_COLOR_CHOICE, colorChoice);
startActivity(intent);

要检索,您可以使用相同的 EXTRA_MESSAGEEXTRA_COLOR_CHOICE 键读取值。

关于java - 关于 Android 中 putExtra 方法顺序的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41519738/

相关文章:

java - 无法访问 R.java 中的可绘制资源

java - 非 Windows RAD Web 开发

java - 通过 Maven 构建配置文件选择类

java - 处理操作栏向上按钮的正确方法?

android - 简洁的多行子串提取

java - 如何修复这些丢失的库?

java - 如何重写CXF AbstractInvoker?

java - 如何使代码发挥作用 - USACO 培训首要任务

android - MenuItemImpl 无法转换为relativelayout

java - Android计算器数字四舍五入