Android 避免在寻呼机滑动选项卡中加载所有片段

Android 避免在寻呼机滑动选项卡中加载所有片段,android,json,android-fragments,android-viewpager,Android,Json,Android Fragments,Android Viewpager,我在页面LidingTab中有几个片段。因为所有片段都在一次加载中,所以它没有良好的性能和质量(有时加载正确,有时转到截击onResponseError) 在片段中,我加载json数据并用json数据填充RecyclerView 我的一个片段: 根据您的评论,下面是一个片段,只实例化一次片段,并且只返回要显示的片段: public class MainActivityPagerAdapter extends FragmentStatePagerAdapter { private Fragment

我在
页面LidingTab
中有几个片段。因为所有片段都在一次加载中,所以它没有良好的性能和质量(有时加载正确,有时转到截击
onResponseError

在片段中,我加载json数据并用json数据填充
RecyclerView

我的一个片段:


根据您的评论,下面是一个片段,只实例化一次片段,并且只返回要显示的片段:

public class MainActivityPagerAdapter extends FragmentStatePagerAdapter {
private Fragment_one fragment_one;
private Fragment_two fragment_two;
private Fragment_three fragment_three;
private Fragment_four fragment_four;

//============================================ Constructor
public MainActivityPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);
    fragment_one = new Fragment_one();
    fragment_two = new Fragment_two();
    fragment_three = new Fragment_three();
    fragment_four = new Fragment_four();
}

//============================================ GetItem Method ()
@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return (fragment_one);
        case 1:
            return (fragment_two);
        case 2:
            return (fragment_three);
        case 3:
        default:
            return (fragment_four);
    }
}
}

您可以通过重写setUserVisibleHint来加载特定片段

boolean isVisible;

@Override
public void setUserVisibleHint(boolean isVisibleToUser) { 
   super.setUserVisibleHint(isVisibleToUser);
   isVisible= isVisibleToUser;

    if (isVisible) { 
       //callApi
    } else {  
      Log.d(TAG, "this fragment is now invisible");
    }
 }

每次需要显示片段时,适配器(重新)都会创建片段。考虑将它们保存为成员,只创建一次,并在 GeTime< /Cord>中返回相应的代码。您可以给我简单的代码,当我使用您的代码时,我一直都有NPE异常,我的问题是初始化,在OnCeCaleVIEW之前调用这个方法(StuuSurVistiBurnHyt),如果你能给我完整的代码,我将不胜感激。你从哪里获得NPE请分享你的堆栈跟踪我从哪里获得NPE使用上下文(getActivity)。
public class MainActivityPagerAdapter extends FragmentStatePagerAdapter {
private Fragment_one fragment_one;
private Fragment_two fragment_two;
private Fragment_three fragment_three;
private Fragment_four fragment_four;

//============================================ Constructor
public MainActivityPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);
    fragment_one = new Fragment_one();
    fragment_two = new Fragment_two();
    fragment_three = new Fragment_three();
    fragment_four = new Fragment_four();
}

//============================================ GetItem Method ()
@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return (fragment_one);
        case 1:
            return (fragment_two);
        case 2:
            return (fragment_three);
        case 3:
        default:
            return (fragment_four);
    }
}
}
boolean isVisible;

@Override
public void setUserVisibleHint(boolean isVisibleToUser) { 
   super.setUserVisibleHint(isVisibleToUser);
   isVisible= isVisibleToUser;

    if (isVisible) { 
       //callApi
    } else {  
      Log.d(TAG, "this fragment is now invisible");
    }
 }