Android Fragment再入門

以前、Androidの開発を行った時は、2.x系がメインだったため、Fragmentについてあまり調べていませんでした。Androidアプリを開発するにあたり、使い方を調べ直しました。

Activity

Androidアプリは少なくとも一つのActivity(Main Activity)を持ちます。Main Activityを、AndroidManifest.xmlにおいてcategory属性をLAUNCHERと記述することによって、アプリケーションとして起動します。Activityは、Windowベースのアプリのルートウインドウに相当します。

一方、Activityは、Windowsを持つ共有ライブラリという側面もあります。Windows OSにおけるOCXに相当します。AndroidManifest.xmlに記述したActivityは、別アプリケーションからIntentを使って呼び出すことが出来ます。

Activityは単一のアプリケーションとして振る舞うことができるため、Activity Mangerを経由した起動など大がかりな仕組みの上で動作していました。

Fragment

Android 3.0系でタブレットフレームワークに拡張するにあたり、Viewを作成するためのライトウエイトコンポーネント(Fragment)が追加されました。Fragmentは、Activityのように単独で使うコンポーネントではなく、Activityに組み込んで使うコンポーネントです。Activity単位で再利用が可能です。

Fragmentの再利用については、AndroidStudioの標準デザインパターンで分かるFragment入門 - Qiitaがとても参考になりました。

サンプル

AndroidStudioの標準デザインパターンで分かるFragment入門 - Qiitaを参考にしてFragmentを作成したところ、いくつかエラーが発生しましたので修正方法をメモしておきます。

Fragmentのパッケージ名修正が必要

Android StudioでFragmentを作成するとandroid.app.Fragmentとして作成されますが、import android.support.v4.app.Fragmentにしないと、fragmentManager.replaceでコンパイルエラーになります。

【修正後】import android.support.v4.app.Fragment;
【修正前】import android.app.Fragment;

TextFrame作成時にinterfaceの追加が必要

TextFrameを作成して追加すると、実行時エラーになります。

MainActivityにTextFragment.OnFragmentInteractionListenerインタフェースを追加する必要があります。

参考情報