SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Android Studio 3.3 の新機能

Android Studio 3.3の目玉機能「ナビゲーションエディタ」を理解する

Android Studio 3.3 の新機能 第1回

ナビゲーションエディタを使って簡単な画面遷移を行う(1)

 まずは、雰囲気をつかむために、単純な画面遷移を作ってみましょう。図3の画面遷移について考えてみます。

図3:簡単な画面遷移
図3:簡単な画面遷移

 最初に FirstScreenFragment が表示され、その中での操作により、 SecondScreenFragment へと画面が切り替わります。とてもシンプルですね。

プロジェクトを作成する

 それでは、実際にAndroid Studioを操作しながら、画面を作っていきます。新規にアプリを作り始めますが、プロジェクトの作成時点では特別な設定をする必要はありません。 MainActivity のテンプレートとしては、図4のように Empty Activity を選択します。

図4:Empty Activityを選択する
図4:Empty Activityを選択する

 また、本記事ではKotlinによる解説を行うので、図5のように、Kotlin言語を設定します。

図5:本記事ではKotlin言語を選択する
図5:本記事ではKotlin言語を選択する

 アプリ名は NavigationSample 、パッケージ名は com.example.navigation にしました。これで、図6のようなプロジェクトがセットアップされます。

図6:今回ベースとなるプロジェクト
図6:今回ベースとなるプロジェクト

 これでプロジェクトの作成は完了です。

ナビゲーショングラフのファイルを作成する

 では、次にナビゲーショングラフのファイルを作成していきます。まずは、ファイルツリーのresフォルダを右クリックして、New -> Android Resource Directoryを選択します(図7)。

図7:リソースディレクトリを作成する入り口
図7:リソースディレクトリを作成する入り口

 すると、リソースディレクトリの作成ウィザードが現れるので、図8のようにResource typeを navigation に設定します。

図8:ナビゲーショングラフのためのディレクトリを作成する
図8:ナビゲーショングラフのためのディレクトリを作成する

 Directory nameは自動で定まるので、変更しないでください。このままOKをクリックすれば、 navigation ディレクトリが作成されます。

 続いて、ファイルを作成します。 navigation ディレクトリを右クリックして、New -> Navigation resource fileを選択します(図9)。

図9:リソースファイルを作成する入り口
図9:リソースファイルを作成する入り口

 すると、リソースファイルの作成ウィザードが現れるので、図10のようにFile nameを nav_graph に設定します。

図10:リソースファイルを作成する入り口
図10:ナビゲーショングラフのファイル名を設定する

 Directory nameは自動で設定されるので、触らなくて結構です。このまま「OK」ボタンをクリックしてください。すると、Android Studioがナビゲーションアーキテクチャコンポーネントのライブラリ追加を提案してきます(図11)。

図11:ライブラリ追加の可否を確認される
図11:ライブラリ追加の可否を確認される

 これをOKすることで、 app/build.grale にライブラリの設定が追加されます。ここまでの手順で、ナビゲーショングラフのファイルが作成されました(図12)。

図12:res/navigationにナビゲーショングラフのファイルが作成された
図12:res/navigationにナビゲーショングラフのファイルが作成された

 この中にナビゲーショングラフを定義していきます。

ナビゲーションエディタからフラグメントを作成する

 次に、ナビゲーショングラフの基本単位となる、 ディスティネーション(Destination)を作成します。ディスティネーションは、主にフラグメントをナビゲーショングラフ内にリンクしたものです(実はアクティビティもディスティネーションになれますが、本記事では扱いません)。通常の方法で作成されたフラグメントを利用しても構いませんが、せっかくなので、ナビゲーションエディタからフラグメントを作成してみましょう。図13の①にある追加アイコンをクリックします。

図13:ナビゲーションエディタからフラグメントを作成する
図13:ナビゲーションエディタからフラグメントを作成する

 すると、ディスティネーションを追加するためのメニューが開きます。このとき、作成済みのフラグメントがあればリストに並びますが、今回は新しく作成したいので、②にある「Create new destination」を選択します。すると、フラグメント作成ウィザードが開きます(図14)。

図14:フラグメント作成ウィザード
図14:フラグメント作成ウィザード

 まずは FirstScreenFragment を作成したいので、Fragment Nameの欄に FirstScreenFragment と記入して、「Finish」ボタンをクリックします。これで、フラグメントが作成されました。それと同時に、フラグメントが最初のディスティネーションとして、ナビゲーショングラフに登録されました(図15)。

図15:最初のディスティネーションがナビゲーショングラフに表示された
図15:最初のディスティネーションがナビゲーショングラフに表示された

 同様の手順を繰り返して、 SecondScreenFragment を定義します(図16)。

図16:2つめのフラグメントを作成する
図16:2つめのフラグメントを作成する

 これで、画面遷移の元となる2つの画面を生み出すことができました。

 フラグメントとしてはこれで完成としたいところなのですが、残念ながらAndroid Studioが生成したフラグメントは、 Arguments の受け取りを想定したためか、今回は必要のない余計なボイラープレート(定型文)を多く含んでいます。今後の作業の妨げとなるため、今のうちに消しておきましょう。 FirstScreenFragment.ktSecondScreenFragment.kt から、 onCreateView 以外の実装をすべて削除します。リスト1のようになります。

[リスト1]FirstScreenFragment.kt
package com.example.navigation

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

class FirstScreenFragment : Fragment() {
  override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
  ): View? {
    return inflater.inflate(
      R.layout.fragment_first_screen, container, false)
  }
}

 SecondScreenFragment.kt にも、同様の修正を行います。これで、フラグメント側の準備はひとまず完了です。

次のページ
ナビゲーションエディタを使って簡単な画面遷移を行う(2)

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

Android Studio 3.3 の新機能連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 中川 幸哉(ナカガワ ユキヤ)

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

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

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11435 2019/03/13 11:00

イベント

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

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

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

メールバックナンバー