Android getIntExtra()和putExtra()?
我读了《Hello 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);
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:是的,就是这样。