3

FragmentTabsPager クラスを使用しています

http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html

私のアプリの1つで。FragmentTabsPager には 3 つの Fragment が含まれています。レイアウト内の左側に、FragmentTabsPager 内の現在のフラグメントにメッセージ (onListItemClick) を送信するリストがあります。ページャー内で現在の Fragment インスタンスを取得するのが非常に困難です。

申し訳ありませんが、これは漠然としていますが、誰かが素晴らしいアイデアを持っていれば.

List フラグメントからメッセージを渡すメカニズムは問題なく、問題なく FragmentTabsPager クラスにメッセージを取得できます。ストレスを引き起こしているTabHost内の現在のフラグメントにメッセージを取得しています。

4

1 に答える 1

3

私はついに答えを見つけました!

メッセージを内部フラグメントに渡すには、その中でパブリック関数を呼び出すだけです。トリッキーな部分は、正しいフラグメントを探すときに発生します!

したがって、最初にフラグメントを取得するには、これを CustomFragmentPagerAdapter 内に追加します。

    public static class TabsAdapter extends FragmentPagerAdapter implements .. {
..

public Fragment findFragment(int position) {
            String name = "android:switcher:" + mViewPager.getId() + ":" + position;
            FragmentManager fm = ((FragmentActivity) mContext).getSupportFragmentManager();
            Fragment fragment = fm.findFragmentByTag(name);
            if (fragment == null) {
                fragment = getItem(position);
            }
            return fragment;
        }

次に、メインアクティビティからフラグメントにアクセスします

CustomFragment fragment = mTabsAdapter.findFragment(1);
if(fragment != null)
   fragment.customFunction(args); //<-- your custom function

私は実際にすべてのフラグメントクラスに ActionBarSherlock を使用していることに注意してください。しかし、これでも問題を解決できます。

于 2012-10-26T16:51:52.133 に答える