SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Android開発のためのJava SE再入門

Androidアプリにおけるユーザインタフェースの基本処理

Android開発のためのJava SE再入門(3)


  • X ポスト
  • このエントリーをはてなブックマークに追加

静的リソースの変更

 ここでGraphical Layoutの画面に戻って、ボタンとTextViewコンポーネントを追加してみましょう。左のパレット欄から、ボタンとTextViewをドラッグして貼り付けます。これをそのまま実行すると、次のようになります。CTRL+F11キーでエミュレータ画面の縦横の切り替えてみても、ちゃんと一列に並んでいます。

図3 ボタンとTextViewの表示
図3 ボタンとTextViewの表示

 次に、ボタンに表示される文字列を変更してみましょう。ボタンの上で右クリックして、メニューを表示させ、Edit Textを選択します。すると文字列リソースの選択画面になります。まだ文字列リソースは作成していませんので、「New String...」ボタンをクリックします。

図4 リソース選択
図4 リソース選択

 文字列リソース作成画面になりますので、IDとしてbutton_str1(任意の文字列)、文字列の値に「サンプル実行」とします。そのままOKをクリックしてリソース選択に戻り、button_str1を指定します。

 これで、ボタンの文字列を変更しました。

図5 文字列リソース作成
図5 文字列リソース作成

 が、Android Layout Editorには、次のように正しくボタンの文字が表示できていません。

図6 Android Layout Editor
図6 Android Layout Editor

 これはAndroid Layout Editor上の表示のみの問題ですが、このあたりまだ発展途上といえます。今のところこれを回避するには、文字列の最後を半角文字にすることです。たとえば、「 サンプル実行 」と前後に半角のスペースを加えればちゃんと表示できます。

図7 Android Layout Editor
図7 Android Layout Editor

リソースを動的に変更する

 ここまでの説明は、XMLファイルで画面のレイアウトを行う方法です。ただ、もちろんすべてのリソースを静的に定義できないケースもあります。その場合は、リソースIDを利用して、リソースをプログラムから動的に変更します。

 リソースIDは、Android Layout Editor上でも確認できます。さきほど追加したTextViewのコンポーネント上でマウスを右クリックし、メニューを表示させて、Edit IDを選択します。textView1と表示されるはずです。

 リソースはRクラスに定義されているのでしたね。R.javaには、以下のように定義されているはずです。

リスト3 R.javaの一部
public final class R {
    public static final class id {
        public static final int button1=0x7f050000;
        public static final int textView1=0x7f050001;
    }

 ではこのIDを使って、TextViewの文字を変更してみます。

リスト4 HelloAndroid_1.java
package codezine.androidjava.chap1;

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

public class HelloAndroid extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TextView tview = (TextView)findViewById(R.id.textView1);
        tview.setText("動的に設定します");
    }
}

 リソースIDから、GUIオブジェクトを取得するには、Activityクラスに用意されているfindViewByIdメソッドを用います。引数にリソースIDを指定すると、それに対応するViewオブジェクトが返されます。Viewクラスは、すべてのGUIコンポーネントのスーパークラスになっていますので、サンプルでは、TextViewクラスにキャストにしています。

 文字列の変更は、TextViewクラスのsetTextメソッドを用います。setTextメソッドは、このように引数で直接文字列するか、または文字列のリソースIDを指定します。

次のページ
ボタンのイベント処理

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Android開発のためのJava SE再入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6026 2011/07/21 12:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング