Androidアプリを作り始めたけど画面の作り方がよく分からない、ActivityやFragmentがあるけど違いや使い分け方は分からない方はいるのではないでしょうか。今回は、画面の作り方やActivityとFragmentの違いについて詳しく解説していきます。
Androidアプリではレイアウトという仕組みを使って画面を作る
Androidアプリでは、レイアウトという仕組みを使ってアプリの画面にコンポーネントを配置して行くことができます。レイアウトファイルというものをGUIエディターかXMLで編集することができます。Layoutについては、以下の記事で詳しく解説しているので参考にしてみてください。
ActivityとFragmentを使って画面を作る
レイアウトは、Activityというコンポーネントをベースにして他のUIコンポーネントを配置していきます。似たようなコンポーネントにFragmentというものがありますが、Activityの上で動作するコンポーネントでマルチペインやタブなどを実装するときに活用できます。
ActivityとFragmentの違い
ActivityとFragmentは、どちらも似たようなライフサイクルを持っているので似たような印象がありますが全くの別物です。違いについて紹介していきます。
Activityの特徴
Activityは、全ての画面のベースになるコンポーネントです。アプリのライフサイクルに合わせてペインを生成・破棄されるようになっています。1つのペインを扱うのに向いているので、タブやマルチメインを実装する時はFragmentを利用することが多いです。また、Activityは持っている値をアクティビティの2つのライフサイクルを跨いで保持することができません。なので、そういった場合にもFragmentを利用することが多いです。
Fragmentの特徴
Fragmentの大きな特徴としては、複数のペインを持つことができることと複数のライフサイクルを跨いで値を保持できることです。Activityの上で動作するので、Activityのライフサイクルに合わせてペインを生成・破棄します。Activityと似たライフサイクルを持つので、アプリの状態に添ったUIの変更や更新なども行い易いです。値の保持機能もあるので、アプリの再起動や回転があっても次のライフサイクルに値を維持することができます。また、Activityとは異なりFragmentの中に親子関係を持つことができるので細かくペインを分けることができます。
今回は、以下のような画面を作っていきます。下のボタンを追加します。
1. Fragmentを継承したクラスを実装
まず、Fragmentを継承したクラスをKotlinで実装します。今回はシンプルな実装をしていきます。
package com.example.sample_profile
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
class ProfileFragment: Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_main, container,false);
}
}
2. Fragmentのレイアウトを実装
次は、実装したFragment用のレイアウトを作ります。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_1"
android:layout_width="match_parent"
android:layout_height="50sp"
android:background="#bcbcbc"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/button_1"
android:text="Save"
android:layout_width="wrap_content"
android:layout_height="30sp"
android:textSize="20sp"
android:textColor="#666"
android:background="#fff"/>
</LinearLayout>
実装すると以下のようになります。
3. ActivityにFragmentを組み込む
実装したFragmentをActivityに実装していきます。Fragmentは単体では表示できず、Activityに載せることで初めて表示できます。
アプリ開発におすすめの本
土日などに時間を確保してやりたいときにおすすめの本です。iPhoneアプリ開発の手順を一通り理解できるように設計されています。アプリ開発を「体験」することにこだわっていて、開発したことがない人にも楽しめる内容になっています。
たった2日でマスターするiPhoneアプリ開発集中講座 Xcode 11 Swift 5対応
もっとAndroidアプリ開発に必要な知識を学びたいという人向けに、次の記事で参考になる本を紹介しています。初級〜中上級まで紹介しているので、ぜひ参考にしてみてください。