我要向一个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";