gpt4 book ai didi

android - 从 Activity 调用 Tabbed Fragment 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:08:10 25 4
gpt4 key购买 nike

我有一个包含三个 fragment 的 Activity 。这些 fragment 使用使用 PagerAdapter 的操作栏选项卡。我想要做的是从主要 Activity 访问 Activity 选项卡式 fragment 中的方法。我已经尝试了下面的代码,但这只是将 fragment 返回为 null,所以我猜它无法在选项卡中找到它!

 NPListFragment articleFrag = (NPListFragment) getSupportFragmentManager().findFragmentByTag("NP");
articleFrag.refreshT();

寻呼机适配器:

public class AppSectionsPagerAdapter extends FragmentPagerAdapter {
public AppSectionsPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
return new NPListFragment();
case 1:
return new PListFragment();
case 2:
return new FavouritesFragment();
}
return null;
}

@Override
public int getCount() {
return 3;
}

}谁能建议?我已经在这上面花了大约 6 个小时,我只是没有在解决这个问题上取得任何进展。

最佳答案

您应该做的是:每个 fragment 只创建一次,然后将其提供给对 getItem 方法的所有调用。

例如:

public class AppSectionsPagerAdapter extends FragmentPagerAdapter {

Fragment one, two, three;

public AppSectionsPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
if(one == null)
one = new NPListFragment();
return one;
case 1:
if(two == null)
two= new PListFragment();
return two;
case 2:
if(three == null)
three= new FavouritesFragment();
return three;
}
return null;
}

@Override
public int getCount() {
return 3;
}

}

现在,即使您在 Activity 中也可以调用 getItem

如果你想调用一个特定的方法,你只需要将它转换为真正的 fragment 类。

int pos = viewpager.getCurrentItem();    
Fragment activeFragment = adapter.getItem(pos);
if(pos == 0)
((NPListFragment)activeFragment).refreshT();
...

关于android - 从 Activity 调用 Tabbed Fragment 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29587584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com