Android getIntExtra()和putExtra()?

Android getIntExtra()和putExtra()?,android,android-intent,Android,Android Intent,我读了《Hello Android》这本书,但我不理解下面的代码。 我不知道,在这段代码中如何处理getIntExtra()和putExtra() 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);

我读了《Hello Android》这本书,但我不理解下面的代码。 我不知道,在这段代码中如何处理getIntExtra()和putExtra()

 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" ;
    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);
        puzzle = getPuzzle(diff);
        calculateUsedTiles();
        puzzleView = new PuzzleView(this);
        setContentView(puzzleView);
        puzzleView.requestFocus();
    }
    // ...
}
我遇到的问题是,您正在Game类中设置一个局部整数(“diff”)。默认值为零(easy),然后立即将其传递到getPuzzle方法…。用户输入值(真实值)是如何进入getPuzzle方法的

此代码:

 Intent intent = new Intent(Sudoku.this, Game.class); 
 intent.putExtra(Game.KEY_DIFFICULTY, i); 
 startActivity(intent); 
创建一个意图,当使用
startActivity
执行时,该意图会执行两件事:

  • 它启动class
    Game
    (由参数
    Game.class
    指定)的新活动,并
  • 它将
    i
    (=用户输入)传递到活动中,并用
    KEY\u难点
    的字符串内容进行标记
在活动中,此行:

 int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_EASY); 

读取在用于启动活动的意图中为
键设置的值。因此,
diff
现在包含用户选择的值(或
难度_EASY
,如果活动是通过不同的意图启动的,而该意图没有设置
关键难度
)。

意图用于在android中以编程方式启动活动。意图可以携带数据,您可以将其传递给新启动的活动

startGame(int i)
有目的地开始新游戏活动。在intent中添加一个额外值意味着,您正在将数据传递给intent。然后,启动的活动(在您的例子中是Game.java)可以从意图中访问这个额外的内容

它是一种在活动之间传递数据的机制

第一个参数(KEY_难点)是识别额外参数的关键。因此,如果您使用键“mykeyexample”为意图添加额外的内容,则必须在另一个活动中使用相同的键“mykeyexample”执行get,才能从意图中获得所需的额外内容


希望这有帮助

它在这里通过了--private void startGame(inti)实际上,我不太明白你想要什么!如果您想获得用户的输入,只需创建一个
EditText
,即可获得所需的一切!!谢谢。实际上你的意思是在startActivity(i)函数中,调用了Game类,如果我们必须选择一个难度,getIntExtra()不容易阅读难度,而是阅读我们选择的内容。这是真的吗?@FahimehHashemian:是的,就是这样。