fragment
4548 ワード
Fragment使用総括Android基礎:Fragment,これを見れば十分--怠け者ロード
Fragment(破片)はAndroid 3にある小型のActivityです.0の場合に表示されます.FragmentはActivityにおけるUIを表現する行為または一部である.Fragmentはactivityに埋め込まなければならない.それらのライフサイクルは、宿主activityのライフサイクルに直接影響されます.
1.Fragmentのレイアウトを定義する2、クラス継承Fragmentを定義する3、クラス内のonCreateViewメソッドを書き換え、現在のFragmentのレイアウトとしてViewオブジェクトを返します.fragmentが初めてユーザインタフェースを描画すると、onCreateView()メソッドが呼び出されます.fragmentのUIを描画するには、fragmentレイアウトのルートであるviewを返す必要があります.fragmentがUIを提供しない場合はnullを返します.
FragmentはAndroid 3.0で発売されたもので、3.0の低バージョンでFragmentを使用するには、1、すべてのFragmentとFragmentManagerをsupport-v 4パッケージのクラスに変更する2、Activityの継承をFragmentActivity(support-v 4パッケージの)に変更する2つのステップを実行する必要があります.
システムがこのactivity layoutを作成すると、layoutで指定された各Fragmentがインスタンス化され、onCreateView()メソッドが呼び出され、各Fragmentのlayoutが取得され、Fragmentから返されたViewが要素の場所に直接挿入されます.各fragmentが再起動すると、システムはFragmentを復元するために使用できます.さらに、idでFragmentをキャプチャしてトランザクションを処理することができ、1つのfragmentにIDを提供する方法は3つあり、具体的には以下の通りである:1.android:idプロパティに一意のIDを提供します.2.android:tag属性に一意の文字列を提供する.3.以上の2つが提供されていない場合、システムは容器viewのIDを使用します.
ActivityでFragmentを管理するには、FragmentManagerを使用してactivityのgetFragmentManager()を呼び出してインスタンスを取得する必要があります.replace
add+hide+show
注意:1.fragmentのライフサイクルはactivityにバインドされており、addの複数のfragmentの後、activityのonstartが実行されるたびに、複数のfragmentのonstartも実行され、実行順序はaddの順序と同じであり、(一番上のfragmentしか見えませんよ)、activityはonPauseメソッドを実行し、複数のfragmentはonPauseを実行します.その他activityライフサイクルと一致するもの.2.radiogroup+radiobuttonの組合せを使用して(add済みfragment)fragmentがfragmentを実行しないonstartメソッドを切り替える
Fragmentのライフサイクルはactivityのライフサイクルとよく似ており、そのライフサイクル方法は以下の通りです.onAttach:activityonCreateへのバインド:fragmentの作成onCreateView:fragmentのレイアウトの作成onActivity Created:activityの作成が完了した後onStart:表示(一応説明)、非対話onResume:表示、対話可能onPause:部分表示、インタラクティブ不可onStop:見えないonDestroyView:fragmentを破棄するviewオブジェクトonDestroy:fragmentを破棄するonDetach:activityから切り離す
ライフサイクルの注意
動的にfragment---replace-の3番目のパラメータを追加-tagを設定
getFragmentManager-tagタグのfragment 0を見つける-調整方法
追加fragmentがユーザーに表示されている場合、setuserVisibleHint()はtrue値を呼び出し、fragmentがユーザーに表示されない場合、setuserVisibleHint()はfalse値を取得します.
AndroidはnewInstance()を使用してfragment&setArguments()伝達パラメータをインスタンス化http://blog.csdn.net/czhpxl007/article/details/51277319 http://www.jianshu.com/p/708f5983dd82
fragmentとは
Fragment(破片)はAndroid 3にある小型のActivityです.0の場合に表示されます.FragmentはActivityにおけるUIを表現する行為または一部である.Fragmentはactivityに埋め込まなければならない.それらのライフサイクルは、宿主activityのライフサイクルに直接影響されます.
fragmentの定義
1.Fragmentのレイアウトを定義する2、クラス継承Fragmentを定義する3、クラス内のonCreateViewメソッドを書き換え、現在のFragmentのレイアウトとしてViewオブジェクトを返します.fragmentが初めてユーザインタフェースを描画すると、onCreateView()メソッドが呼び出されます.fragmentのUIを描画するには、fragmentレイアウトのルートであるviewを返す必要があります.fragmentがUIを提供しない場合はnullを返します.
public class Fragment1 extends Fragment {
// Fragment onCreateView( )
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// view
// 1
View view = inflater.inflate(R.layout.fragment1, null);
// view
return view;
}
}
下位互換性
FragmentはAndroid 3.0で発売されたもので、3.0の低バージョンでFragmentを使用するには、1、すべてのFragmentとFragmentManagerをsupport-v 4パッケージのクラスに変更する2、Activityの継承をFragmentActivity(support-v 4パッケージの)に変更する2つのステップを実行する必要があります.
activityにfragmentを追加する
レイアウトで宣言
: ,“android:name” : layout Fragment 。
システムがこのactivity layoutを作成すると、layoutで指定された各Fragmentがインスタンス化され、onCreateView()メソッドが呼び出され、各Fragmentのlayoutが取得され、Fragmentから返されたViewが要素の場所に直接挿入されます.各fragmentが再起動すると、システムはFragmentを復元するために使用できます.さらに、idでFragmentをキャプチャしてトランザクションを処理することができ、1つのfragmentにIDを提供する方法は3つあり、具体的には以下の通りである:1.android:idプロパティに一意のIDを提供します.2.android:tag属性に一意の文字列を提供する.3.以上の2つが提供されていない場合、システムは容器viewのIDを使用します.
動的作成-fragmentの切り替え
ActivityでFragmentを管理するには、FragmentManagerを使用してactivityのgetFragmentManager()を呼び出してインスタンスを取得する必要があります.replace
public void news(View view) {
// Fragment
FragmentManager manager = getFragmentManager();
//
FragmentTransaction transaction = manager.beginTransaction();
// FrameLayout(viewgroup) Fragment
transaction.replace(R.id.frame, new NewsFragment());
//
transaction.commit();
}
add+hide+show
FragmentManager mManager = getSupportFragmentManager();
FragmentTransaction mTransaction = mManager.beginTransaction();
if (from == -1 && !baseFragments.get(index).isAdded()) {
mTransaction.add(R.id.fl_main, baseFragments.get(index), tags[index]).commit();
mCurrentIndex = index;
} else {
if (from != index) {
if (!baseFragments.get(index).isAdded()) { // add
mTransaction.hide(baseFragments.get(from))
.add(R.id.fl_main, baseFragments.get(index), tags[index]).commit(); // fragment,add Activity
} else {
mTransaction.hide(baseFragments.get(from)).show(baseFragments.get(index)).commit(); // fragment,
}
mCurrentIndex = index;
}
}
注意:1.fragmentのライフサイクルはactivityにバインドされており、addの複数のfragmentの後、activityのonstartが実行されるたびに、複数のfragmentのonstartも実行され、実行順序はaddの順序と同じであり、(一番上のfragmentしか見えませんよ)、activityはonPauseメソッドを実行し、複数のfragmentはonPauseを実行します.その他activityライフサイクルと一致するもの.2.radiogroup+radiobuttonの組合せを使用して(add済みfragment)fragmentがfragmentを実行しないonstartメソッドを切り替える
ライフサイクル
Fragmentのライフサイクルはactivityのライフサイクルとよく似ており、そのライフサイクル方法は以下の通りです.onAttach:activityonCreateへのバインド:fragmentの作成onCreateView:fragmentのレイアウトの作成onActivity Created:activityの作成が完了した後onStart:表示(一応説明)、非対話onResume:表示、対話可能onPause:部分表示、インタラクティブ不可onStop:見えないonDestroyView:fragmentを破棄するviewオブジェクトonDestroy:fragmentを破棄するonDetach:activityから切り離す
ライフサイクルの注意
fragment間通信--fragmentをマーク
動的にfragment---replace-の3番目のパラメータを追加-tagを設定
beginTransaction.replace(R.id.ll1, new Fragment1(), "f2");
getFragmentManager-tagタグのfragment 0を見つける-調整方法
//replace() Fragment tag。
Fragment2 fragment2 = (Fragment2) getActivity().getFragmentManager().findFragmentByTag("f2");
// fragment ,
fragment2.updateText("aaaaa");
追加fragmentがユーザーに表示されている場合、setuserVisibleHint()はtrue値を呼び出し、fragmentがユーザーに表示されない場合、setuserVisibleHint()はfalse値を取得します.
AndroidはnewInstance()を使用してfragment&setArguments()伝達パラメータをインスタンス化http://blog.csdn.net/czhpxl007/article/details/51277319 http://www.jianshu.com/p/708f5983dd82