0

这是重新创建活动的代码。

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 的映射中,替换给定键的任何现有值。参数
key:String 或 null
值:int 或 null

我不明白 String 键在做什么?我的意思是,是这样吗。每次键都用作向捆绑添加物质的指针?此外,是否需要将 STATE_SCORE 定义为 "playerscore" ?

4

3 回答 3

0

不会对您的字符串键执行任何操作。它就像一个哈希映射。我不太明白你的最后一个问题,将键定义为常量是一种很好的方式。

于 2013-05-17T07:21:05.060 回答
0

Bundle像字典一样工作。在字典中,您使用关键字来查找含义(或定义)。这就是String. Bundle使用它来检索链接到该键的值。

此外,是否需要将 STATE_SCORE 定义为“playerscore”

这不是绝对必要的,但是如果您为您的键声明一个常量,并始终使用成本常数来存储/检索捆绑包中的值,拼写错误的概率会降低到接近于零(因此由于调试时间很长,所以需要更多的 headcache)

于 2013-05-17T07:21:14.697 回答
0

是否需要将 STATE_SCORE 定义为“playerscore”。Ans is NO 你可以直接给字符串

savedInstanceState.putInt("playerscore", mCurrentScore);

我不明白 String 键在做什么

它就像一个键值对。当你这样做时

 savedInstanceState.putInt("playerscore", 1);

值 1 是带有键“playerscore”的商店,当您执行 get 时

savedInstanceState.getInt("playerscore");

这将返回 1

于 2013-05-17T07:27:57.087 回答