アンドロイドのアプリは画面が複数あると面倒です。これを楽にするための仕組みがフラグメントらしいです。フラグメントはアンドロイドのバージョン3.0に採用されましたが、このころから今年までアンドロイドのアプリ製作は中断していたので知りませんでした。
アプリはMainActivityにTopFragmentとBottomFragmentを実装することで実現します。フラグメントにすることによりオブジェクトの独立性を高めソースがすっきりします。しかし...
フラグメントなんてない時代にこんなアプリを作っていました。
1画面の中に3つのViewがあり複雑です。フラグメントがあったら容易にできたとは思えません。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFF00"
tools:context=".MainActivity"
android:orientation="vertical">
<fragment
android:name="net.sadaji.twofragment.TopFragment"
android:id="@+id/fragment_top"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@layout/fragment_top" />
<fragment
android:name="net.sadaji.twofragment.BottomFragment"
android:id="@+id/fragment_bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
tools:layout="@layout/fragment_bottom" />
</LinearLayout>
TopFragmentとBottomFragmentを実装します。
TopFragment.java
package net.sadaji.twofragment;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class TopFragment extends Fragment {
@Override
public View onCreateView(
LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState
) {
return inflater.inflate(R.layout.fragment_top, container);
}
}
Fragmentを継承します。
fragment_top.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/caddie" />
</LinearLayout>
普通にxmlを書くだけです。
このプログラムはHello
World.と同じように何もしないプログラムです。フラグメント間、フラグメントとMainActivity間でデータのやり取りをするプログラムは別途公開予定。
ダウンロード: activity_main.xml
MainActivity.java
BottomFragment.java
fragment_bottom.xml
TopFragment.java
fragment_top.xml
|