java - 如何检测哪个 fragment 处于 Activity 状态?

标签 java android android-fragments android-recyclerview

我的项目包括 tabLayout 内的 fragmentsFragmentsadapter 中有 recyclerView,可以从 Web 服务器加载数据。在本例中,我想为适配器使用两种不同的布局。我知道如何使用 StackOverflow 中的两种不同的布局,但我的问题是我必须检测必须加载哪个 fragment 。因此,我必须从 adapter 类中检测哪个 fragment 处于 Activity 状态。我怎样才能做到这一点?

VoyageAdapter.java

 public class VoyageAdapter extends RecyclerView.Adapter<VoyageAdapter.ViewHolder> {

@Override
public VoyageAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (Case_A){
  View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.row_voyage_view_bus, parent, false);
    return new ViewHolder(itemView);}

else if (Case_B){
   View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.row_voyage_view, parent, false);
    return new ViewHolder(itemView);
    }
}}

BusFragment.java

 public class BusFragment extends MyBaseFragment {
TabLayout tabLayout;
MyViewPager viewPager;
CustomFragmentPagerAdapter adapter;

public BusFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_base_voyage, container, false);
    tabLayout = view.findViewById(R.id.tabLayout);
    viewPager = view.findViewById(R.id.viewPager);
    adapter = new CustomFragmentPagerAdapter(getChildFragmentManager());
    if (ResultActivity.hasReturn)
        attachFragmentsHasReturn();
    else
        attachFragmentsOneWay();
    return view;
}

void searchVoyages() {
    Voyage.getInstance().searchBusVoyages(getContext());
}

@Override
public void updateDate() {
    for (Fragment fragment :
            adapter.getFragments()) {
        ((MyBaseVoyageFragment) fragment).showLoadingDialog(true);
    }

    searchVoyages();
}
}

FlightFragment.java

 public class FlightFragment extends MyBaseFragment {
TabLayout tabLayout;
MyViewPager viewPager;
CustomFragmentPagerAdapter adapter;
public FlightFragment() {
    // Required empty public constructor
}
void searchVoyages(){
    Voyage.getInstance().searchFlightVoyages(getContext());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_base_voyage, container, false);
    tabLayout = view.findViewById(R.id.tabLayout);
    viewPager =  view.findViewById(R.id.viewPager);
    adapter = new CustomFragmentPagerAdapter(getChildFragmentManager());
    if(ResultActivity.hasReturn)
        attachFragmentsHasReturn();
    else
        attachFragmentsOneWay();
    return view;
}
@Override
public void updateDate() {
    for (Fragment fragment:
            adapter.getFragments()) {
        ((MyBaseVoyageFragment)fragment).showLoadingDialog(true);
    }
    searchVoyages();
}
}

最佳答案

您可以尝试以下操作来获取当前 fragment :

Fragment currentFragment = adapter.getItem(viewPager.getCurrentItem());

关于java - 如何检测哪个 fragment 处于 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56098121/

相关文章:

java - 我无法点击按钮

即使日志级别不允许,java util 日志记录也会调用方法

java - Java 中的服务器,C 中的客户端 - 无法获取数据

Java行为通知频率

java - 使用共享元素转换后 Activity 只是闪烁

android - 如何让当前 fragment 显示在 viewpager 的特定选项卡中?

android - 在我的应用程序中使用自签名证书

android - 如何等到 fragment 被删除

android - 替换 fragment 的 Backstack 顺序

java - Android:我应该向 ViewPager 中使用的 fragment 添加一个空构造函数吗