Fragmentを勉強する その2

その1に引き続いて、fragmentをcustomeViewのように利用をしてページ遷移をしてみます。

前回、FragmentManagerを用いる事で、fragmentの入れ替えをする事ができました。

メインのActivityでの記述になるので、現状ではメインのアクティビティ内においたボタンでの切り替えは可能ですが

fragment内のボタンで、移動させる方法を今回は紹介していきます。

 

もちろん、書き方はいくつかあるのですが、大きく分かれて2つあります。

1、activityの参照を引っ張ってくる。

fragment.setActivity(Activity act);

みたいな関数を用意して、Activityから、fragmentを作る時、自身の参照も渡して

act.setHello();

みたいに直接、Activityの関数を実装する方法

2、callback関数を用意して、それを使って記述をする方法。

setOnClickListner();

みたいな形で実装できるようにする。

があって、おすすめは2の方法です。

 

callback用のインターフェースをfragment内に記述

public interface CallbackFunction {
 public void callback_1(); 
}

する。そして、このコールバックを次の用に設定できるようにする

CallbackFunction callback;
 public void setOnCallbackFunction(CallbackFunction _callback){
 callback = _callback;
 }

これで、Activity側で

frag1.setOnCallbackFunction(new Fragment1.CallbackFunction() {
 @Override
 public void callback_1() {
 }
 });

みたいにセットをすると、

fragment内で

button.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 callback.callback_1();
 }
});

を実装する事で、コールバックをfragment->activityに送る事が出来ました。

 

ただ、これだと、setOnCallbackをし忘れると、ボタン押した時に、nullで落ちてしまうので、

if(callback != null)

かもしくは、

public Fragment1(CallbackFunction _callback) {
 callback = _callback;
 }

みたいにコンストラクタでコールバック設定を必須にしてしまう方法にしてます。

 

  • written on 2015.07.01
  • category : fragment

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑