Android Intent地图数据被覆盖

时间:2018-12-09 07:35:54

标签: java android android-studio android-intent

我要向一个Intent添加4个Extra,并且由于某种原因,每次Intent映射中的1个插槽都会被覆盖。除非我更改我的Extras的添加顺序,否则它始终是同一插槽,然后被覆盖的插槽会更改。这是图片: Okay so far...

前进... Step forward and my int is gone? 添加最后一个Extra可以正常工作。 Final extra looks good

我检查了变量,所有数据正确存在于mTeamMemberFrag中。使用断点,我可以看到第一个和第二个Extras没有问题,然后第三个覆盖了第一个Extras,然后第四个没有问题。我可以看到我没有将它们映射到相同的键。我已经搜索了Stack Overflow,并通读了有关Intent和Intent过滤器的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";

0 个答案:

没有答案