以下是重新创建活动的代码。
static final String STATE_SCORE = "playerScore";
static final String STATE_LEVEL = "playerLevel";
...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
在这里,我对bundle的putInt()方法的定义有疑问。当我查找其定义时,我得到了以下文档 -
public void putInt(String key,int value)
在API级别添加 1
将int值插入此Bundle的映射中,替换 给定键的任何现有值。参数
键:一个字符串, 或null
值:一个int或null
我不明白用String键做了什么?我的意思是说,是这样的。每次键被用作指向捆绑添加内容的指针?此外,是否需要将STATE_SCORE定义为“playerscore”?
答案 0 :(得分:0)
您的字符串键不会执行任何操作。它就像一个哈希映射。我不太明白你的最后一个问题,将密钥定义为常量是很好的方式。
答案 1 :(得分:0)
Bundle
就像字典一样。在字典中,您使用关键字来查找含义(或定义)。这就是String
的目的。 Bundle
使用它来检索与该键关联的值。
此外,是否需要将STATE_SCORE定义为“playerscore”
这不是严格必要的,但是如果你为你的密钥声明一个常量,并且总是使用costant来存储/检索来自bundle的值,那么拼写错误的概率会减少到接近零(因此,由于调试时间过长而导致更多的headcache)
答案 2 :(得分:0)
是否需要将STATE_SCORE定义为“playerscore”。 Ans是NO你可以直接给出字符串
savedInstanceState.putInt("playerscore", mCurrentScore);
我不明白用String键做了什么
它就像一个键值对。当你这样做时
savedInstanceState.putInt("playerscore", 1);
值1存储时键为“playerscore”,当你执行get
时savedInstanceState.getInt("playerscore");
这将返回1