gpt4 book ai didi

android - getIntExtra() 和 putExtra()?

转载 作者:太空狗 更新时间:2023-10-29 15:36:49 24 4
gpt4 key购买 nike

我读过 Hello Android 一书,但我不明白以下代码。我不知道如何处理 getIntExtra() 和 putExtra() int 这段代码。

 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);
}

游戏.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”)。默认值为零(简单),然后立即将其传递给 getPuzzle 方法……。用户输入值(真正的值都很好)是如何进入 getPuzzle 方法的?

最佳答案

这段代码:

 Intent intent = new Intent(Sudoku.this, Game.class); 
intent.putExtra(Game.KEY_DIFFICULTY, i);
startActivity(intent);

创建一个 Intent ,当使用 startActivity 执行时,它会做两件事:

  • 它启动一个类Game的新 Activity (由参数Game.class指定)和
  • 它将 i(= 用户输入)传递到 Activity 中,用 KEY_DIFFICULTY 的字符串内容标记。

在 Activity 中,这一行:

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

读取在用于启动 Activity 的 Intent 中为 KEY_DIFFICULTY 设置的值。因此,diff 现在包含用户选择的值(或 DIFFICULTY_EASY,如果 Activity 是通过不同的 Intent 启动的,没有设置 KEY_DIFFICULTY).

关于android - getIntExtra() 和 putExtra()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com