2013年10月28日月曜日

Fragmentを使ってみる(レイアウトなし)

引き続き絶賛Fragmentの勉強中(`・ω・´)シャキーン

今回はレイアウトが無いFragmentを作成したいと思います。
レイアウトを利用しないため、addメソッドでリソースIDを関連付ける必要がありませんφ(`д´)メモメモ...
そのため、onCreateViewの呼び出しが行われないので、オーバーライドする必要が無いそうです。

違うアクティビティーなどで共通のロジックを利用する場合や、
なんかバックグラウンドで動かす処理の場合に役に立つカモ――(゚∀゚)――!!?

■AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.fragment3"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.fragment3.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
■activity_main.xml
メインのレイアウトファイルになります。
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
</LinearLayout>
■MainFragment.java

Fragmentのソースコードになります。
って、レイアウトと関連付けする必要がないので中身は空ですワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
package com.example.fragment3;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainFragment extends Fragment {
}
■MainActivity.java

メインではFragmentをいつも通り生成しますが、
add時にFragmentと関連付けるレイアウトのリソースIDを指定せず、
第1引数に、追加されるFragmentを設定して(事前に Activity に追加されていてはならない)、
第2引数に、Fragmentのタグ名を指定する。(ActivityからFragmentを取得したい場合はFragmentManager.findFragmentByTagで取り出し時に利用される)

記述は簡単!(`・ω・´)シャキーン
package com.example.fragment3;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
 
public class MainActivity extends FragmentActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //Fragmentを管理するFragmentManagerを取得
        FragmentManager manager = getSupportFragmentManager();
        //追加や削除などを1つの処理としてまとめるためのトランザクションクラスを取得
        FragmentTransaction tx = manager.beginTransaction();

        //fragmentを生成
        MainFragment fragment1 = new MainFragment();
        //
        tx.add(fragment1, "layout_fragment_1");
        // 
        tx.commit();
    }
 
}
実行結果は次のようになります。


何も処理をしていないので真っ白(ΦωΦ)フフフ…

(´ε`;)ウーン…便利なのは分かっているのですが、
いまいちパッと使いどころが思いつかないのは、まだまだ未熟なせいか・・・orz

以上です(`・ω・´)ゞビシッ!!

参考URL

0 件のコメント:

コメントを投稿