java - Android Intent 地图数据被覆盖
问题描述
我正在向 Intent 添加 4 个 Extras,由于某种原因,Intent 地图中的 1 个插槽每次都会被覆盖。除非我更改添加附加项的顺序,否则它始终是同一个插槽,然后被覆盖的插槽会更改。这是图片: 好的,到目前为止...
往前走…… 往前走,我的 int 不见了? 添加最后一个 Extra 工作正常。 最后的额外看起来不错
我检查了我的变量,所有数据都正确存在于 mTeamMemberFrag 中。使用断点,我可以看到添加第一个和第二个 Extras 没有问题,然后第三个覆盖第一个,然后第四个添加没有问题。我可以看到我没有将它们映射到同一个键。我在 Stack Overflow 上进行了搜索,并通读了有关 Intents 和 Intent Filters 的 Android 文档。我尝试更改添加到硬编码值的值,尝试更改添加 Extras 的顺序,并仔细检查了 MainActivity 中的静态最终变量。
好吧,当我在写这篇文章时仔细检查 Main 中的变量时,我发现了导致我的错误的原因:在 MainActivity 中,USERNAMEKEY 和 USERPOSITIONKEY 都被分配了“com.zin.username”,所以取决于我首先添加到 Intent 中的哪个,一个正在覆盖另一个。
我很想知道为什么会这样。谢谢你的时间!
这是我加载 Intent 的代码:
public void onBackPressed() {
mTeamMemberFrag.updateUserID();
Intent resultIntent = new Intent(this, MainActivity.class);
resultIntent.putExtra(MainActivity.USERNAMEKEY, mTeamMemberFrag.getUserName());
resultIntent.putExtra(MainActivity.USERIDKEY, mTeamMemberFrag.getUserID());
resultIntent.putExtra(MainActivity.USERROLEKEY, mTeamMemberFrag.getSpinner().getSelectedItem().toString());
resultIntent.putExtra(MainActivity.USERPOSITIONKEY, mMemberPosition);
setResult(Activity.RESULT_OK, resultIntent);
finish();
Toast.makeText(this, "Team updated", Toast.LENGTH_SHORT).show();
super.onBackPressed();
}
在 Main 中,问题实际上出在:
public class MainActivity extends AppCompatActivity {
public static final String USERIDKEY = "com.zin.userid";
public static final String USERPOSITIONKEY = "com.zin.username";
public static final String USERNAMEKEY = "com.zin.username";
public static final String USERROLEKEY = "com.zin.userrole";
解决方案
推荐阅读
- javascript - 如何使用 List.js 更新一个列表
- angular - 为什么订阅服务后价值未定义?
- java - 编写用于查找 int 中出现频率最高的数字的 Java 方法
- python - python - 如何在python中将从字符串中提取的数据的数据类型更改为货币或小数
- express - 如何使用带有 swagger ui 的路由控制器?
- node.js - Elastic Beanstalk + Nginx + Node + React 502 badegateway
- javascript - 用不同大小的盒子填充空白空间的逻辑
- python - 只需调用我的训练模型的方程来预测测试数据集,就可以在不每次运行模型的情况下进行预测吗?
- android - Android Kotlin DownloadManager 因未知原因无法工作
- php - 允许的内存大小致命错误;改进脚本