在 FragmentTabPager 中向 TabHost 内的 Fragment 发送消息

发布于 2024-12-02 07:34:59 字数 607 浏览 3 评论 0原文

中的 FragmentTabsPager 类

我正在使用http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html

在我的一个应用程序中。 FragmentTabsPager 包含 3 个 Fragment。在我的布局中,我在左侧有一个列表,我想将消息(onListItemClick)发送到 FragmentTabsPager 中的当前片段。我在寻呼机中获取当前 Fragment 实例时遇到严重困难。

抱歉,我知道这很模糊,但如果有人有想法那就太好了。

从 List 片段传递消息的机制很好,我可以毫无问题地将消息放入我的 FragmentTabsPager 类中。它将消息放入 TabHost 中的当前 Fragment 中,这给我带来了压力。

I'm using the FragmentTabsPager class from

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

in one of my apps. The FragmentTabsPager contains 3 Fragments. Within my layout, I have a list on the left side which I want to send a message (onListItemClick) to the current Fragment within the FragmentTabsPager. I'm having serious difficulty getting the current Fragment instance within the pager.

Sorry, I know this is vague but if anyone has an idea that would be great.

The mechanics of passing the message from the List fragment is fine, I can get the message into my FragmentTabsPager class no problem. It's getting the message into the current Fragment within the TabHost that's causing me stress.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空宴 2024-12-09 07:34:59

我终于找到答案了!

要将消息传递到内部片段,您只需调用其中的公共函数即可。当寻找正确片段时,棘手的部分就来了!

因此,要首先获取片段,请在 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。但这仍然能够解决您的问题。

I FOUND THE ANSWER FINALLY!

To pass a message to the internal fragments, you simple invoke a public function within it. The tricky part comes when looking for the correct fragment!

So, to first get the fragment, add this within the 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;
        }

Then access the fragment from the main activity like so

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

Please do note that, I'm actually using ActionBarSherlock for all the fragments classes. But this is will still able to solve your problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文