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");
}
}
每次需要显示片段时,适配器(重新)都会创建片段。考虑将它们保存为成员,只创建一次,并在
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");
}
}