如何使用意图传递信息

时间:2014-01-01 07:17:34

标签: android android-intent

从我的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获取额外数据信息时,它是如何存储的?

3 个答案:

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

干杯