Android - 创建活动 - 捆绑

时间:2013-05-17 07:17:12

标签: java android eclipse

以下是重新创建活动的代码。

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”?

3 个答案:

答案 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