1. ホーム
  2. java

[解決済み] アンドロイド開発におけるR.layout.activity_mainの意味(JAVA言語)

2022-02-08 12:02:16

質問内容

R.layout.activity_mainの意味は何ですか?

."演算子は、特定のオブジェクトの変数を定義するために使用されることは理解していますが、この場合、2回使用されているので、何もわかりません。また、"R" と "layout" とは一体何なのでしょうか?

つまり、明らかにクラスなのですが(そうですよね)、その機能は何ですか?基本的にR.layout.activity_mainを説明してください!

質問が漠然としすぎていたり、広すぎたりする場合はコメントをお願いします。

解決方法は?

R.java はクラス(インナークラスがあり、例えば layout または string )が、アプリのリソースへの参照でビルドプロセス中に生成されます。あなたが作成した(または Android が提供した)すべてのリソースは、アプリのリソースへの参照として R リソースIDと呼ばれます。

R.layout.* は、作成したレイアウトリソースを参照するもので、通常は /res/layout . というアクティビティレイアウトを作成した場合 activity_main.xml の参照を使用することができます。 R.layout.activity_main にアクセスすることができます。多くの組み込み機能では、このようなリソースIDを容易に受け入れることができます。 setContentView(int layoutResid) この例は、アクティビティを作成するときに使用するもので、おそらくこの特定の例に遭遇することになるでしょう。

このように文字列リソース(strings.xml内)を作成した場合。

<string name="app_name">Application name</string>

で新しい参照を取得します。 R.string.app_name . これは、文字列リソースが受け入れられる場所であればどこでも使うことができます。 android:label でのアプリケーションの場合 AndroidManifest.xml またはTextViewの上; xmlのどちらかです。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_name"
    />

またはコードで textview.setText(R.string.app_name) .

プログラム的にリソースにアクセスするには Resources クラスを呼び出すことで参照を得ることができます。 getResources を任意のコンテキスト (アクティビティなど) で使用できます。例えば、アクティビティで上記のアプリ名を取得するには this.getResources().getString(R.string.app_name) .

また、デバイスのプロパティや設定(画面サイズや言語など)ごとに異なるリソースを用意することも可能であり、その場合は R . 最も簡単な例は、文字列です。 values フォルダを /res を言語指定子で指定し(だから /res/values-nl を追加すると、リソース管理システムは、ユーザーのデバイスに基づいて、どちらの識別子を提供するかを巧みに判断します。

少しはお役に立てたでしょうか。リソースの詳細については ドキュメント .