0

私のアプリケーションのメインフラグメントアクティビティには、次の機能があります

private final void insertFragmentIntoView(final SherlockFragment fragment,
            String tag) {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.add(R.id.fragment_content, fragment, tag);
        ft.commit();
    }

これR.id.fragment_contentはフレーム レイアウトであり、基本的にこのフレームに新しいフラグメントを挿入します。挿入したフレームには、新しい画面に移動するボタンがあります。私が望むのは、アプリケーションのすべてのナビゲーションが FragmentActivity で行われることです。FragmentActivity を子フラグメントから呼び出すにはどうすればよいですか?

敬具

4

2 に答える 2

0

フラグメントにリスナー クラスを作成すると、親アクティビティがそのリスナーを実装します。次に、リスナーをフラグメントに登録し、アクションを実行するメソッドを呼び出します。このリンクをもっと見ることができますhttp://developer.android.com/training/basics/fragments/communicating.html

フラグメントとアクティビティがどのように通信するかの例。

class MyFragment extends Fragment{

class interface MyFragmentListener {
doSomeAction();
}


MyFragmentListener myListener;
onAttach(){
myListener=(MainActivity )getActivity();
}


onButtonClick(){
myListener.doSomeAction();
}


}

class MainActivity extends FragmentActivity implements MyFragment.MyFragmentListener 
{

doSomeAction(){

//TODO perform some action from your fragment to activity
}

}
于 2013-04-10T07:34:31.223 に答える
-1

リスナーを使用することは、Fragment とアクティビティの間で通信するための推奨される方法です。

詳細については、この Androidドキュメント セクションを参照してください。簡単に言えば、Activity クラスによってリスナー インターフェイスを実装し、 getActivity() をキャストしてリスナーへのフラグメントを作成するだけです。

私の個人的な経験から、これは次のことができるので非常に便利です。

基になるアクティビティを簡単に切り替える (たとえば、3.0 より前のバージョンでは互換性のためにラッパー アクティビティでフラグメント全体をホストし、11 以降では他のフラグメントと共にこのフラグメントをホストする) ラッパー アクティビティがコールバックをサポートするかどうかを簡単に制御します。リスナーが実装されているかどうかを確認し、実装されていない場合はアプリ固有のアクションを実行します。

于 2013-04-10T07:28:00.583 に答える