Android がどのように機能するかをより深く理解したいので、ビューが実際に「内部で」どのように機能しているかを説明してくれる人が必要です。
通常の手順では、メソッド「setContentView(R.layout.ourlayoutfile)」を使用して、拡張されたアクティビティの onCreate メソッドで XML からビューをインフレートします (これは正しい言葉ですか?)。次に、その XML からビューを見つけます。
簡単な例: ボタンを見つける必要がある場合は、最初に「setContentVIew()」を呼び出し、次にボタンで「findViewById」を呼び出す必要があります。次に、このボタン/ビューをそれぞれ操作できます。
最近 LayoutInflater をいじり始めたのですが、「setContentView」メソッドがどうにもならないところまで来てしまい、驚いたことに、自分の Android の知識が非常に乏しいことがわかりました。LayoutInflater を機能させることさえできませんでした。恥ずかしかったです。
1 日後、LayoutInflater でビューを膨らませることができました。実際にはそれほど難しいことではありません。私は最初から非常に近くにいましたが、何を渡せばよいかわからないパラメーターが 1 つあります。このコードを見てください: (これはすべて Activity の onCreate メソッドで行われています)
View v = getLayoutInflater().inflate(R.layout.activity_main, (ViewGroup) getWindow().getDecorView());
final Button b = (Button) v.findViewById(R.id.button1);
final TextView tv = (TextView) v.findViewById(R.id.textView1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("Just random text");
}
});
}
このコードは正常に動作しますが、私が直面していた問題は、実際には次のコード行でした。
getLayoutInflater().inflate(R.layout.activity_main, null);
私は常に「null」パラメータを渡していましたが、もちろんうまくいきませんでした。ドキュメントでも、このパラメーターはオプションであると書かれています。(なぜ ? 必要な場合) ?
シンプルなレイアウトにしました。それを見て、HiarchyViewer でどのように見えるかを確認してください。
上の図の 2 番目のパラメータは何ですか? なぜそのパラメータが必要なのですか? 私のレイアウト( R.layout.activity_main )をAndroidが提供するビュー(左から右への最初のビュー - 親ビュー)に接続している可能性があります。その場合、Android がこれら 2 つを自動的に接続しないのはなぜですか?!
ビューに関して知っておく必要がある有用なことがあれば、誰かが私に教えてくれる(またはリンクを投稿する)ことができればとてもうれしいです。さらに、ビューの仕組みに関するいくつかのウェブサイトへのリンクを取得できればいいと思います..など。便利なもの。
誰かが私の質問に反対票を投じる場合は、説明してください。皆様、本当にありがとうございました!