【Android】Fragment管理ツール類
前のプロジェクトはフラジャイティでの切り替えとフラジャイメンテーションが必要ですが、フラジャイティ自身は自分を破壊することができません。
Frangement ManagerとFrangentTransationもFragment類では実例化できません。Activityでインターフェースを書くのは面倒くさいので、いっそのことツール類を書きました。
ソースは以下の通りです
Fregamentを切り替え
鶏肉炒めは簡単で、一行のコードです。
リターンキーを直接押してもいいです。ボタンはリターンを実現したいです。直接リターンキーの上にマッピングしてもいいです。
リターンキーを書き直したら、この行のコードでキャンセル操作ができます。
Activityでは
FrangementaManagerとFrangentTransationの例を取得します。
直接ゲットすればいいです
Frangement ManagerとFrangentTransationもFragment類では実例化できません。Activityでインターフェースを書くのは面倒くさいので、いっそのことツール類を書きました。
ソースは以下の通りです
package com.dubhe.broken.fragmenthelper;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
/**
* :DubheBroken
* :2018/11/19
* :github.com/DubheBroken/FragmentHelper
* :Fragment
*/
public class FragmentHelper {
private static FragmentManager fragmentManager;
private static FragmentTransaction fragmentTransaction;
private static FragmentManager getFragmentManager() {
return fragmentManager;
}
private static void setFragmentManager(FragmentManager fragmentManager) {
FragmentHelper.fragmentManager = fragmentManager;
}
public static FragmentTransaction getFragmentTransaction() {
return fragmentTransaction;
}
public static void setFragmentTransaction(FragmentTransaction fragmentTransaction) {
FragmentHelper.fragmentTransaction = fragmentTransaction;
}
private static void initFragmentTransaction() {
fragmentTransaction = fragmentManager.beginTransaction();
}
/**
* onBackPressed
* fragment
* ,
* @param activity activity, AppCompatActivity
* fragment (AppCompatActivity)getActivity()
*/
public static void back(AppCompatActivity activity) {
if (getFragmentManager().getBackStackEntryCount() <= 1) {
activity.moveTaskToBack(true);
}else{
fragmentManager.popBackStack();
}
}
/**
* Fragment
*
* @param activity activity, AppCompatActivity
* fragment (AppCompatActivity)getActivity()
* @param fragment fragment
*/
public static void switchFragment(Fragment fragment, AppCompatActivity activity) {
FragmentHelper.setFragmentManager(activity.getSupportFragmentManager());
FragmentHelper.initFragmentTransaction();
//frame id
fragmentManager.findFragmentById(R.id.frame_main);
fragmentTransaction
.replace(R.id.frame_main, fragment)
.addToBackStack(null)
.commit();// frameLayout fragment
// .commitAllowingStateLoss();
}
}
まずあなたのプロジェクトの中でFraameLayoutコントロールをFragmentの容器として用意して、上記のソースコードをタイプに書いてあなたのプロジェクトに入れて、64行目と66行目のframe me_をください。メーンをあなたのFrame LayoutのIDに変えます。Fregamentを切り替え
鶏肉炒めは簡単で、一行のコードです。
FragmentHelper.switchFragment(new Fragment2(), this);
Fragmentをキャンセルしますリターンキーを直接押してもいいです。ボタンはリターンを実現したいです。直接リターンキーの上にマッピングしてもいいです。
リターンキーを書き直したら、この行のコードでキャンセル操作ができます。
Activityでは
FragmentHelper.back(this);
Fragmentの中で FragmentHelper.back((AppCompatActivity) getActivity());
(ここの主なAcitiviyはAppComppatActivityで、FrangentActivityをサポートしていますが、この類は古いのでおすすめできません。FragmentActivityが必要であれば、FragmenntHelper.javaのApComppatActivityをFragment Activityに変えて、強い回転を取ればいいです。FrangementaManagerとFrangentTransationの例を取得します。
直接ゲットすればいいです
FragmentManager fm = FragmentHelper.getFragmentManager();
FragmentTransaction ft = FragmentHelper.getFragmentTransaction();