Android R.Javaを使用して、XMLファイルで定義されたリソースへのアクセスを提供します。リソースにアクセスするには、リソースのIDを渡してfindViewById()
メソッドを呼び出す必要があります。フェッチされます。
これは、BeanがXMLコンテキストで定義され、アプリケーションコンテキストを使用してフェッチされるSpringに似ています。 context.getBean("beanId")
Beanは外部で定義され、コードを変更せずに変更できるため、これにより疎結合が提供されます。
これは私を混乱させます。 AndroidはSpringに似ていますが、どのような利点がありますか?
- とにかく、中間R.Javaを持っていることのポイントは何ですか?リソースリーダー/アプリケーションコンテキストを使用して、XMLから直接リソースを取得することはできませんでした。例えば
findViewById("resourceId")
- 疎結合はありません。 R.Javaの参照は自動生成されるので、どのようにしてリソースを削除して新しいリソースに入れることができますか?
- どんなデザインパターンに従っていますか(ある場合)?
- IOC(Roboguiceのように)を使用してリソースを注入する方が良いのではないでしょうか?それで、なぜグーグルはリソースを操作するこのような奇妙な方法を提供することを決めたのですか?
私の無知を許してください。私は初心者ですJava開発者が一度に多くのことを試みています。:-)すべてのフィードバックに感謝します。
Android.R.Javaは[〜#〜] xml [〜#〜] IDが格納される場所だけではありません。また、ドローアブル、レイアウト、文字列、配列、および基本的にリソースで宣言できるものなどのリソースへのアクセスも含まれています。
個人的には、Eclipseを使用するときに便利だと思います。 findViewById(R.id.
とEclipseは、選択可能なオプションのリストを含むツールチップを表示します。
ただし、プラットフォームレベルでは、ハードコードされたid変数は、文字列を使用してリソースを特定するときのエラーを防ぐのに役立つと言えます。
最大の利点は、ローカリゼーションとさまざまな画面サイズの代替リソースの提供です。
たとえば、文字列リソースR.string.myname
を使用できます。これは/values-en/strings.xml
で英語で、/values-es/strings.xml
でスペイン語で定義できます。
レイアウトファイルで@string/myname
を使用するか、コードでR.string.myname
を使用する必要があるロケールに応じて、システムが適切なファイルを処理または取得します。
同様に、ポートレートとランドスケープの2つのレイアウトファイルを
res/layout/mylayout.xml
res/layout-land/mylayout.xml
コードでは、R.layout.mylayoutを指定してレイアウトを拡張します。デバイスが横向きモードの場合、Resource Managerはlayout-landでファイルを取得します。
これを手動で行うのは悪夢です-したがって、Rファイルの必要性
比較は感じます 幾分(少し)(実際には)奇妙です。なぜなら、2つのメカニズムを使用するという事実に基づいて比較するからです名前付きのもの何かを行うため。たとえば、リソースの読み込みについては、.Net
の世界でリソースの処理がどのように行われるかを確認してください。
compile-timeリソースが利用可能かどうかのチェックを提供します。そうでない場合は、それを指すR.Java
内にstaticがないためです。 Springの例では、beanId
というBeanがあることをどのように確認できますか?ただし、リソースの正しいtypeであるかどうかのチェックは提供されません。
なぜこれが緩んでいないのですか?新しいリソースが同じ名前である限り、同じ静的定数が生成されます。 Springでは、同じBean名を使用する必要があります。
デザインパターン?無し。リソースに名前を付けて参照することにより、1レベルの間接参照を追加するだけで、リソースを参照します名前のみで、実際の場所から直接ロードするのではありません。
実際、リソースのローディングはローカリゼーションに対応する必要があるため、リソースareが注入されます。 Androidがどのように機能するかについては こちら を参照してください。 .Net
の世界では、衛星文化の集合体に追加の文化が詰め込まれています。 resource manager は、現在のカルチャに基づいて適切なものをロードします。
また、ID、ドローアブル、レイアウト、文字列、配列、および基本的にリソースで宣言できるものなどのリソースへのアクセスも含まれています。