[Android]画面遷移を実装する。 | 妄想プログラマのらくがき帳

2012年11月12日月曜日

[Android]画面遷移を実装する。

今回は画面遷移を実装してみます。

要求仕様は次の3点。
  • メイン画面のボタンを押下すると、サブ画面に遷移する
  • サブ画面は画面中央にメッセージを表示する
  • 画面遷移の際に、メイン画面からサブ画面に対して表示するメッセージを渡す
画面遷移と画面間のデータの受け渡しを勉強するのが目的です。

まずは、サブ画面を作成します。
メニューの[ファイル] - [新規] - [その他]から[Android] - [Android Activity]を選択すると、
新規アクティビティの作成ウィザードが表示されるので、画面に各項目を入力してサブ画面の
アクティビティを作成します。

作成するサブ画面はシンプルなものなので、BlankActivityを選択し、名前をSecondActivityとしました。



「完了」ボタンを押すと、srcフォルダ下のパッケージにSecondActivity.javaが追加されます。
この時点でSecondActivityにはTextViewが配置されているので、これを使ってメッセージを表示しようと思います。
とりあえず、レイアウトエディタ画面でTextViewにid="@+id/textView"を設定しておきます。

次は、メイン画面のボタンクリックハンドラに次画面を表示するコードを記述します。
public void onClickButton(View v)
{
 Intent intent = new Intent(this, SecondActivity.class);
     startActivity(intent);
}
Intentというのは各コンポーネントを結びつける役割をするものです。
上記のようにstartActivity()に渡すことで、Intentコンストラクタの第2引数に指定したActivityを開始させることができます。

最後に、メイン画面からサブ画面にメッセージを渡します。
メイン画面側は、先ほどのボタンクリックハンドラに1行追加します。
public void onClickButton(View v)
{
 Intent intent = new Intent(this, SecondActivity.class);
 intent.putExtra("message", "Hello SecondActivity.");
     startActivity(intent);
}
putExtra()は所謂key-valueペアです。上記の場合、keyを"message"としてメッセージを格納しています。

サブ画面側は、putExtra()で格納したメッセージを取得し、画面上のTextViewに表示します。
メッセージの取得と画面への表示は、画面表示と同時に行いたいので、サブ画面のOnCreate()の中に記述します。
public void onCreate(Bundle savedInstanceState)
{
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_second);
       
 Intent intent = getIntent();
 TextView textView = (TextView)findViewById(R.id.textView);
 textView.setText(intent.getStringExtra("message"));
}
メイン画面でstartActivity()に渡したIntentは、getIntent()で取得することができます。
また、Intent.putExtra()で格納したメッセージはIntent.getStringExtra(key)で取得することができます。
上記のコードでは、先にメッセージ表示先のTextViewをidを使って取得し、Intent.getStringExtra(key)で取得した
メッセージをTextView.setText()で画面に表示しています。

これで実装完了です。
アプリを起動し、メイン画面のボタンを押下すると…



サブ画面が表示され、メイン画面から渡したメッセージが表示されました。

0 件のコメント:

コメントを投稿