2012年3月3日土曜日

【Forest君用】TextViewを動的に表示させる方法 その2

前回のTextViewのテキスト設定の説明の最後に
「Hello World!」アプリの画面と異なると言いましたが、
違いは画面レイアウトです。

前回作成した画面はTextViewをアクティビティに設定しています。
つまり、単一のTextView要素を表示させています。

「Hello World!」アプリの画面はLinearLayoutをアクティビティに設定しています。
この場合、LinearLayoutの要素として複数のViewを表示させることが可能です。

実際のアプリの画面としては後者が有効で、
単一のView要素をアクティビティに設定することは、まずないでしょう。

じゃあ前回やったことは無駄なの?って思うかもしれませんが、
そんなことはありません。
今回はxmlファイルで定義したLinearLayoutのTextView要素にJavaソース内で
テキストを設定します。
そこで前回の内容が生きてくるんです!

ではでは。
まずはxmlで定義するTextViewをJavaソースで特定できるように
IDを設定します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
    android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

「Hello World!」アプリのものに8行目を追加しただけです。
TextViewにtextというIDを関連付けしています。

次にJavaソース。
package jp.gr.java_conf.siroco.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // IDからTextViewインスタンスを取得
        TextView textView = (TextView) findViewById(R.id.text);

        // 表示するテキストの設定
        textView.setText("STAND ALONE COMPLEX");

        // ActivityにViewを設定
        setContentView(textView);
    }
}

前回作ったものと異なるのは14行目です。
findViewByIdメソッドを使用してViewを定義しています。
findViewByIdメソッドはその名の通り、IDからViewを検索します。
引数で与えた「R.id.text」が、先ほどxmlファイルで設定したID「text」を指します。

IDから取得したTextViewインスタンスに対してテキスト設定~Activityへのセットを行います。
(インスタンスの生成方法以外は同様ですね)


今回は以上です。
ここまでくれば、画面表示の基本の設定はマスタです。
(基本中の基本だけですけどね。。。)
後は画面の要素となる各オブジェクトに対する操作を覚えていくと幅が広がります。

さて次回以降はJavaのことや、eclipseのことに触れていきます。
(Javaわかんないと元も子もないからねぇ~)

0 件のコメント:

コメントを投稿