4

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

ゲーム.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 メソッドに入る方法をどのように見つけますか?

4

2 に答える 2

14

このコード:

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

startActivityで実行すると、次の 2 つのことを行うインテントを作成します。

  • クラスGame(パラメータで指定Game.class) の新しいアクティビティを開始し、
  • iの文字列 content でタグ付けされたアクティビティに (= ユーザー入力) を渡しますKEY_DIFFICULTY

アクティビティでは、次の行:

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

KEY_DIFFICULTYアクティビティの開始に使用されたインテントで設定された値を読み取ります。したがって、diffユーザーが選択した値 (または、設定されていないDIFFICULTY_EASY別のインテントを介してアクティビティが開始された場合) が含まれるようになりました。KEY_DIFFICULTY

于 2012-09-07T13:14:49.533 に答える
1

インテントは、Android でプログラムによってアクティビティを開始するために使用されます。インテントは、新しく開始されたアクティビティに渡すデータを運ぶことができます。

startGame(int i)

意図を持って新しいゲーム アクティビティを開始します。インテントに余分なものを追加すると、インテントにデータが渡されます。開始されたアクティビティ (この場合は Game.java) は、インテントからこのエクストラにアクセスできます。

アクティビティ間でデータを受け渡す仕組みです。

最初の引数 (KEY_DIFFICULTY) は、エクストラを識別するキーです。そのため、キー 'mykeyexample' を使用してインテントにエクストラを配置する場合、インテントから目的のエクストラを取得するには、別のアクティビティで同じキー 'mykeyexample' を使用して get を実行する必要があります。

お役に立てれば

于 2012-09-07T13:18:10.040 に答える