オンラインで答えを見つけることができないので、これは本当にばかげた質問に違いありません....キャストによって1つのデータ型が別のデータ型に変更されることはわかっています。このボタンはデータのダイプをどのように変えますか?Button button = (Button)findViewById(R.Bla.Bla)
なぜ私たちはただ書くことButton button = New Button()
ができないのですかそしてそれから別の方法でそれにxmlを割り当てますか?説明してください、私は道に迷っています。
5 に答える
を新しいボタンに設定できます。Button
しかしfindViewById
、ビューを返します。Button
そのosityのいずれかにアクセスしたい場合は、キャストする必要があります。そうしないと、参照はボタンではありません。もちろん、大丈夫な場合もあります。
Androidの場合を参照してください。UI要素は次の2つの方法で作成できます。
1.レイアウト(.xml)ファイルを使用してUI要素を作成します。 そして、それらをJavaクラスで使用するには、それらを対応するクラスにマップします。そのためには、メソッドfindViewById(int id);を呼び出す必要があります。これは、指定されたidを持つそのperticuler要素のビューを返します。したがって、それぞれのコンポーネントに型キャストする必要があります。したがって、すでにxmlに要素を作成している場合、Javaの最後で別のオブジェクトを再度作成するのはなぜですか。したがって、xmlファイルで作成された要素をマップするだけです。
2.Javaエンドを介してUI要素を作成します。 この機能を使用するには、新しいキーワードexを使用してJavaで要素を作成する必要があります。ボタンボタン=新しいボタン(); 次に、そのオブジェクトにすべてのプロパティを設定します。
しかし、しかし、 Androidの哲学によれば、XMLでUIを作成し、Javaエンドでコアビジネスロジックを作成する必要があります。そして、この概念を使用すると、ニートでクリーンなアプリケーションコードを記述できます。ただし、必須ではないことをお勧めします。今はあなた次第です....そして私はあなたがそれを始めたときは違うと感じていると思いますが、しばらくするとあなたはそれを愛し始めるでしょう...
それがアンドロイドの美しさです。
ありがとう。私はあなたの質問に完全に答えたことを願っています。
Button
また、それはのサブクラスであることを忘れないでView
ください。このfindViewById()
メソッドは、ジェネリックView
(レイアウトファイルに配置したもののいずれView
かまたはサブクラス)を返します。View
キャストButton
は「大丈夫です。これは通常のビューではなくボタンです」と言っています。これによりButton
、スーパークラスでは使用できないプロパティとメソッドにアクセスできますView
。
final Button callButton = (Button) findViewById(R.id.callButton);
を使用してXMLビューを検索するfindViewbyId()
と、UIでビューが返されると思いますが、Javaコード内でボタンとして使用し、ボタンメソッドにアクセスするには、返されたビューをキャストする必要があります。
XMLでボタンを指定せずにJavaコードでボタンを作成する方法はいくつかありますが、この方法ではUIとロジックが異なります。
さらに、XMLでUI要素を宣言すると、を使用してレイアウト全体を簡単に変更できるため、より優れていますsetContentView()
。
View
Androidでコンポーネントを作成するには、次の2つのオプションがあります。Button
layout
1- XMLファイルで定義し、を使用してアクセスします(Button) findViewById(R.id.button)
2-コードで動的に作成します。例:Button button = new Button();
どちらにも独自の長所と短所があります。たとえば、UI
in layout
xmlを定義するActivity
と簡潔になりUI
、実際のコードからを分離することで柔軟性が向上します。
動的UI
作成はViews
、オンザフライで作成する必要がある多くのアプリケーションで役立ちます