Androidアプリ開発

AndroidアプリのActivityとFragmentの違いや使い方を詳しく解説

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アプリ開発に必要な知識を学びたいという人向けに、次の記事で参考になる本を紹介しています。初級〜中上級まで紹介しているので、ぜひ参考にしてみてください。

ブログやWebサービスで使えるサーバーの解説とおすすめの紹介Prev

Androidアプリ開発で大切なライフサイクルを分かりやすく解説Nextandroid lifecycle

Related post

  1. Androidアプリ開発

    Androidアプリでダークモードに対応する方法を紹介

    アプリやOSのUIを全体的に黒を基調としたデザインにする機能で、201…

  2. android lifecycle

    Androidアプリ開発

    Androidアプリ開発で大切なライフサイクルを分かりやすく解説

    モバイルアプリを開発していると、ビューの初期化が上手くできなかったり更…

  3. Androidアプリ開発

    Androidアプリ開発で覚えておきたいKotlinの記法を紹介

    Androidアプリ開発するためにKotlinを利用するケースは多くな…

  4. google play service

    Androidアプリ開発

    作ったAndroidアプリをGoogle Playからリリースする手順を解説!

    Androidアプリを作ったら、次はGoogle Playでリリースを…

  5. Androidアプリ開発

    Androidアプリにカメラ機能を開発する手順をわかりやすく解説!

    Androidアプリを開発するとき、カメラや写真を使ったアプリを作りた…

  6. Androidアプリ開発

    Androidアプリ開発のLayoutの基礎的な使い方をわかりやすく解説!

    Androidアプリ開発で、欠かせない要素となっているのがレイアウトで…

PAGE TOP