从我的Sudoku.java
我打电话给Game.java并传递难度级别。
private void startGame(int i) {
Log.d(TAG, "clicked on " + i);
Intent intent = new Intent(Sudoku.this, Game.class);
intent.putExtra(Game.KEY_DIFFICULTY, i);
startActivity(intent);
}
这是Game.java
public class Game extends Activity {
private static final String TAG = "Sudoku" ;
public static final String KEY_DIFFICULTY = "org.example.sudoku.difficulty" ;//What is this?
public static final int DIFFICULTY_EASY = 0;
public static final int DIFFICULTY_MEDIUM = 1;
public static final int DIFFICULTY_HARD = 2;
private int puzzle[] = new int[9 * 9];
private PuzzleView puzzleView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate" );
int diff = getIntent().getIntExtra(KEY_DIFFICULTY,DIFFICULTY_EASY); //What is this?
puzzle = getPuzzle(diff);
calculateUsedTiles();
puzzleView = new PuzzleView(this);
setContentView(puzzleView);
puzzleView.requestFocus();
}
}
我的问题是在行
中发生了什么public static final String KEY_DIFFICULTY = "org.example.sudoku.difficulty" ;
KEY_DIFFICULTY是最终的,我将如何改变它。
此外,在从intent获取额外数据信息时,它是如何存储的?
答案 0 :(得分:3)
这个public static final String KEY_DIFFICULTY = "org.example.sudoku.difficulty" ;
的值没有改变,但想象意图有一个桶(一个hashmap),而KEY_DIFFICULTY
是其中的一个关键
您正在存储针对该键的值并通过意图将其恢复。你永远不会改变自己的关键,因为它是最终的。
即使您删除了最终版本也可以使用,但您必须使用您设置的相同密钥检索该值。
所以KEY_DIFFICULTY
永远不会改变,但是在extras包中对它的值是设置和检索的。
答案 1 :(得分:1)
public static final String KEY_DIFFICULTY = “org.example.sudoku.difficulty”; //这是什么?
=>首先,Intent将数据存储在键值对中,与HashMap相同。因此,无论您想要存储/获取的数据是什么,您都必须拥有KEY名称。
现在,因为您已将KEY_DIFFICULTY
设为static final
,否则您将无法更改它,因为它会变为常量。
答案 2 :(得分:0)
密钥用于获取额外数据,因此不应更改。意图可以通过Bundle
包含或存储数据。有关更多说明,请查看Android Intents。
干杯