2

(final変更できないことはわかっています。しかし、入力した例を読めば、なぜこの質問をするのか理解できます!)

Hello world Android アプリの例を読んでいます。

MainActivity.java

public final static String EXTRA_MESSAGE = "com.example.helloworld.MESSAGE";
....
....
intent.putExtra(EXTRA_MESSAGE, message);

それはどのように機能しますか?メッセージの値を EXTRA_MESSAGE に保存していますか?

また、データを保存するためにいくつの SharedPreferences を使用できますか? 私のアプリはレベルとハイスコアを保存する必要があると仮定すると、どうすればいいですか?

public final static String HIGH_SCORE = "com.example.helloworld.HIGH_SCORE";
public final static String LEVELS = "com.example.helloworld.LEVELS";

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

上記の行を変更してレベルとスコアを保存するにはどうすればよいですか?

4

6 に答える 6

3

疑問がある場合は、ドキュメントを確認してください。

static 修飾子は、final 修飾子と組み合わせて、定数の定義にも使用されます。final 修飾子は、このフィールドの値が変更できないことを示します。

ここで定義される内容:

public final static String EXTRA_MESSAGE = "com.example.helloworld.MESSAGE";

はそのように維持するための定数です。そうしないと、ここにバグが発生することがわかります。

intent.putExtra(EXTRA_MESSAGE, message);

Extra_MESSAGE変更するとEntry、キーとして以前の値を持つ が「失われる」可能性があります (より正確には、その値を別の場所に保存していないため、アクセスできません)。

さらに情報を保存するには、マップのキーがさらに必要になります。これは、正しく定義されたフィールドがここにあることを意味します。

public final static String HIGH_SCORE = "com.example.helloworld.HIGH_SCORE";
public final static String LEVELS = "com.example.helloworld.LEVELS";

これらの値を特定のマップに格納するために、またはそれらを識別子として使用したい場所に格納するために使用できます (キーと値の構造に基づく)。ここでの概念は、データを保存および取得できるようにするために、ゲームを通じてアクセスできる定数を定義する必要があるということです。

于 2013-09-05T15:22:50.250 に答える
0

一度割り当てた値を変更することはできません。それがfinalと呼ばれる理由です。それらは単なるファイルであるため、必要に応じて多くの設定を行うことができます。

intent.putExtra(EXTRA_MESSAGE, message);

地図を考えてみてください。これは単なるキーと値の関係です。EXTRA_MESSAGE がキーで、メッセージがです。

つまり、あなたは-

preferences.edit().putString("name", "adam");

取得するには、使用したキーを使用できます-

preferences.getString("name", "none"); 

チュートリアルとリファレンス:

共有設定

ヴォゲラ

于 2013-09-05T15:15:37.483 に答える
0

この行:

intent.putExtra(EXTRA_MESSAGE, message)

キーIntent'sの下の内部マップにメッセージの値を格納していることを意味します。変数EXTRA_MESSAGEの内容は一切変更されません。EXTRA_MESSAGE

于 2013-09-05T15:19:58.603 に答える