【问题标题】:How to load one tab of viewpager at a time如何一次加载一个 viewpager 选项卡
【发布时间】:2017-08-21 06:57:49
【问题描述】:

如何一次加载一个viewpager标签??

我想开发具有相同片段的动态选项卡。但问题是 ViewPager 一次加载 2 个选项卡,当我更改一个片段中的一些数据时,它会反映在每个片段上。

【问题讨论】:

标签: android android-viewpager


【解决方案1】:

您可以在片段内覆盖此方法,如果此片段在屏幕前

,这将返回true
 @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(isVisibleToUser){
            //You can do inside this method
        }
    }

}

【讨论】:

    【解决方案2】:

    您可以使用yourViewPager.setOffScreenPageLimit(value) 方法。但是预加载页面的最小值是1,所以至少1个页面总是会被缓存。

    要将正确的数据设置到 viewPager 页面,您可以执行以下操作:

    public class YourFragment extends Fragment{
    static final String ARGUMENT_PAGE_NUMBER = "arg_page_number";
    int pos;
    
    static YourFragment newInstance(int page) {
        YourFragment yourFragment = new YourFragment();
        Bundle arguments = new Bundle();
        arguments.putInt(ARGUMENT_PAGE_NUMBER, page);
        yourFragment.setArguments(arguments);
        //save fragment position
        return yourFragment;
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            pos = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
            //now you have position of this fragment
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View yourView = inflater.inflate(R.layout.your_fragment_layout, container, false);
       //use position of the fragment you received in onCreate to set up your views
        return yourView;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多