フラグメントを切り替える方法です。
メインアクティビティでメインフラグメントを設定します。
メインフラグメントに配置したボタンを押下したタイミングでサブフラグメントに切り替えます。
フラグメントの切り替えはFragmentManager#replace()を使用して行います。
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="サブフラグメントへ" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/button1"
android:layout_centerHorizontal="true"
android:text="メインフラグメント" />
</RelativeLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="サブフラグメント" />
</RelativeLayout>
■src/info.paveway.sample.fragment3.MainActivity.java
package info.paveway.sample.fragment3;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
/**
* メインアクティビティ
*
* @version 1.0 新規作成
*
*/
public class MainActivity extends ActionBarActivity {
/**
* 生成された時に呼び出される。
*
* @param savedInstanceState 保存された時のインスタンスの状態
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// スーパークラスのメソッドを呼び出す。
super.onCreate(savedInstanceState);
// メインフラグメントを生成する。
MainFragment fragment = new MainFragment();
// トランザクションを開始する。
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// メインフラグメントを追加する。
transaction.add(android.R.id.content, fragment);
// トランザクションをコミットする。
transaction.commit();
}
}
■src/info.paveway.sample.fragment3.MainFragment.java
package info.paveway.sample.fragment3;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
/**
* メインフラグメント
*
* @version 1.0 新規作成
*
*/
public class MainFragment extends Fragment {
/**
* 生成された時に呼び出される。
*
* @param inflater インフレーター
* @param container コンテナー
* @param savedInstanceState 保存された時のインスタンスの状態
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savendInstanceState) {
// ルートビューを取得する。
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
// ボタンにリスナーを設定する。
((Button)rootView.findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
/**
* ボタンをクリックされた時に呼び出される。
*
* @param v ボタン
*/
@Override
public void onClick(View v) {
// サブフラグメントを生成する。
SubFragment fragment = new SubFragment();
// トランザクションを開始する。
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// フラグメントを置き換える。
transaction.replace(android.R.id.content, fragment);
// バックキーで前のフラグメントの状態に戻せるようにする。
transaction.addToBackStack(null);
// トランザクションをコミットする。
transaction.commit();
}
});
return rootView;
}
}
■src/info.paveway.sample.fragment3.SubFragment.java
package info.paveway.sample.fragment3;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* サブフラグメント
*
* @version 1.0 新規作成
*
*/
public class SubFragment extends Fragment {
/**
* 生成された時に呼び出される。
*
* @param inflater インフレーター
* @param container コンテナー
* @param savedInstanceState 保存された時のインスタンスの状態
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savendInstanceState) {
// ルートビューを取得する。
View rootView = inflater.inflate(R.layout.fragment_sub, container, false);
return rootView;
}
}
以上