【Androidアプリ開発】画面遷移

前回のソースに手を加えて、画面遷移を実装します。

まずはmain.xmlを編集して、ボタンを2つ追加します。

次に、新しい画面(レイアウト)を作成します。
メニューから「ファイル」→「新規」→「Android XML File」を選択。

以下を入力(選択)して「OK」ボタンをクリックします。

  • ファイル:sub.xml
  • What type of resource …:レイアウト

sub.xmlを編集して、ボタンを1つ追加します。

この画面に対応するJavaクラスを作成します。
メニューから「ファイル」→「新規」→「クラス」を選択。

以下を入力(選択)して「完了」ボタンをクリックします。

  • 名前:SubActivity
  • スーパークラス:android.app.Activity
    (「参照…」ボタンをクリックして選択できます)

MainActivity.javaを編集します。
Next/Quitに対応するButton変数を作成し、クリックリスナを登録します。
Quitボタンがクリックされたらfinish()を呼び出し、このActivityを終了します。
NextボタンがクリックされたらIntentでSubActivityを開始します。
(以下では、変更を加えていないonStart()などを省略しています)

public class MainActivity extends Activity {
    private Button m_buttonNext;
    private Button m_buttonQuit;


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

        m_buttonNext = (Button)findViewById(R.id.button_next);
        m_buttonQuit = (Button)findViewById(R.id.button_quit);

        m_buttonQuit.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
            }
        });

    	m_buttonNext.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, SubActivity.class);
                startActivity(i);
            }
        });
    	Log.v(LOG_TAG, “MainActivity::onCreate”);
    }
}

続いてSubActivity.javaを編集します。
基本的にはMainActivity.javaをコピって修正します。
Backボタンがクリックされたらfinish()を呼び出し、このActivityを終了させます。

public class SubActivity extends Activity {
    private static final String LOG_TAG = “ActivityTest”;
    private Button m_buttonBack;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sub);

        m_buttonBack = (Button)findViewById(R.id.button_back);

        m_buttonBack.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
            }
        });
    	Log.v(LOG_TAG, “SubActivity::onCreate”);
    }
}

まだあります。
AndroidManifest.xmlの編集です。

「アプリケーション」タブを選択し、左下の「Application Nodes」の「追加」ボタンをクリックします。

「Activity」を選択して「OK」ボタンをクリックします。

右下の「Attributes for Activity」の「Name*」項目にある「参照」ボタンをクリックします。

「SubActivity」を選択して「OK」ボタンをクリックします。

デバッグ実行してみます。

MainActivityで「Next」ボタンをクリックすると…。

SubActivityが表示されます。
「Back」ボタンをクリックすると、MainActivityに戻ります。

MainActivityで「Quit」ボタンをクリックすると、ホーム画面が表示されます。
この一連の流れで、以下のようなログが出力されました。
※で始まる行は説明のために追加したものです。

※MainActivity起動
03-24 13:49:24.163: ActivityTest(227): MainActivity::onCreate
03-24 13:49:24.173: ActivityTest(227): MainActivity::onStart
03-24 13:49:24.203: ActivityTest(227): MainActivity::onResume
※「Next」ボタンをクリック
03-24 13:50:04.502: ActivityTest(227): MainActivity::onPause
03-24 13:50:04.762: ActivityTest(227): SubActivity::onCreate
03-24 13:50:04.772: ActivityTest(227): SubActivity::onStart
03-24 13:50:04.772: ActivityTest(227): SubActivity::onResume
03-24 13:50:05.432: ActivityTest(227): MainActivity::onStop
※「Back」ボタンをクリック
03-24 13:51:13.262: ActivityTest(227): SubActivity::onPause
03-24 13:51:13.362: ActivityTest(227): MainActivity::onRestart
03-24 13:51:13.362: ActivityTest(227): MainActivity::onStart
03-24 13:51:13.372: ActivityTest(227): MainActivity::onResume
03-24 13:51:13.942: ActivityTest(227): SubActivity::onStop
03-24 13:51:13.952: ActivityTest(227): SubActivity::onDestroy
※「Quit」ボタンをクリック
03-24 13:52:08.282: ActivityTest(227): MainActivity::onPause
03-24 13:52:09.032: ActivityTest(227): MainActivity::onStop
03-24 13:52:09.032: ActivityTest(227): MainActivity::onDestroy

ちなみに「Back」「Quit」の代わりに、端末の「戻る」ボタンを押しても同じことが起こりました。

次のエントリーでは、Activity間でデータの受け渡しを実装します。

コメント

タイトルとURLをコピーしました