setContentViewメソッド「処理の流れ」比較

Android用語集

カテゴリー: Activityクラス  閲覧数:1162 配信日:2013-04-18 17:52


2種類


setContentView(引数)実装方法による分類
・全2種類(正確には全3種類) … 「渡す引数」の違いによる。より正確には【 アクティビティにビューを追加する「setContentView」メソッドには、引数の異なる3つのメソッドが用意されている 】ため


「処理の流れ」比較

- setContentView (View view) もしくは setContentView (View view, ViewGroup.LayoutParams params) setContentView (int layoutResID)
- レイアウト動的定義(JAVA) レイアウト静的定義(XML)
特徴 ・プログラムの中でビューを作成してアクティビティに追加するため、プログラムの実行時条件に応じてビュー追加が可能
・初期画面のようなものをプログラムの中で全て記述するとビューの定義などでプログラムが長くなってしまう
・プログラムの中でビューの設定や配置方法などを記述する必要がないため、プログラムをすっきりとさせることができる
・プログラムの実行前にXMLファイルを作成しておく必要があるため、プログラムの実行中にビューを追加することは出来ない
処理の流れ 1. 部品クラスのオブジェクトを生成

2. そのオブジェクトに表示される文字列を、setTextメソッドを使って設定

※ここまでの処理で、ビューが作成される

3. Activitiyクラスで定義されているsetContentViewメソッドを利用して、 このビューをアクティビティへ追加
1. レイアウト用XMLファイルを作成

2. Activitiyクラスで定義されているsetContentViewメソッドを利用して、 このファイルをアクティビティへ設定
※左記と同じsetContentViewメソッドを利用するが、「引数はViewクラスのオブジェクトからint型の値」となる点に注意が必要。このint型の値はレイアウトXMLファイルのリソースIDと呼ばれる
※リソースIDは、レイアウト用XMLファイル名が「○○.xml」だった場合には、「R.layout.○○」で参照可能。ちなみに、「main.xml」だった場合には「R.layout.main」となる
▼例1
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 Button button = new Button(this); // Buttonクラスのインスタンスオブジェクト(button)を生成
 button.setText("ボタン1"); // ボタン(button)に表示される文字列を、setTextメソッドを使って設定  

 setContentView(button); // Activitiyクラスで定義されているsetContentViewメソッドを利用して、このビューをアクティビティへ追加(アクティビティの中に、Buttonクラスのオブジェクトを配置)
}


▼例2
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 TextView display = new TextView(this); // TextViewクラスのインスタンスオブジェクト(display)を生成
display.setText("オブジェクト名displayは任意。つまり好きに命名してok"); // テキストビュー(display)に表示される文字列を、setTextメソッドを使って設定  

 setContentView(display); // Activitiyクラスで定義されているsetContentViewメソッドを利用して、このビューをアクティビティへ追加(アクティビティの中に、TextViewクラスのオブジェクトを配置)
}
▼例1
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 setContentView(R.layout.test6_1); // 「test6_1.xml」というファイルを作成し、作成したプロジェクトの「res/layout」ディレクトリに配置
}


▼例2
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 setContentView(R.layout.main); // 「res/layout」ディレクトリにあるmain.xmlを利用
}