首页 > 解决方案 > 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";

标签: javaandroidandroid-studioandroid-intent

解决方案


推荐阅读