android - 在我选择选项卡之前加载进度条

标签 android webview tabs progress

这是我的选项卡初始化代码:

    private void initTabs() {

        serviceTabs.addTab(serviceTabs.newTab().setText("Request Appointment"));
        serviceTabs.addTab(serviceTabs.newTab().setText("Online Booking"));   
        serviceTabs.addTab(serviceTabs.newTab().setText("Feedback"));    
        serviceViewpager.setOffscreenPageLimit(serviceTabs.getTabCount());    
        final ViewPageAdapter adapter = new ViewPageAdapter(getChildFragmentManager(), serviceTabs.getTabCount(),
                mContext);    
        serviceViewpager.setAdapter(adapter);    
        serviceViewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(serviceTabs));    
        serviceTabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {  
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                serviceViewpager.setCurrentItem(tab.getPosition());
            }   
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                Log.i("", "on tab unselected Service");
            }    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                Log.i("", "on tab reselected Service ");
            }
        });
    }

    private class ViewPageAdapter extends FragmentStatePagerAdapter {
        int mNumOfTabs;   
        Context context;    
        ViewPageAdapter(FragmentManager fm, int numOfTabs, Context context) {
            super(fm);
            this.mNumOfTabs = numOfTabs;
            this.context = context;
        }

        @Override
        public Fragment getItem(int position) {    
            switch (position) {   
                case 0:
                    return new CustomizeFragment();    
                case 1:
                    Bundle url = new Bundle();                      url.putString(Constants.WEB_URL,Constants.APPOINTMENT_ONLINE_BOOKING);
                    return WebViewFragment.createInstance(url);

                case 2:
                    return new CustomizeFragment();

                default:
                    return null;
            }
        }   
        @Override
        public int getCount() {
            return mNumOfTabs;
        }
    }   
    @Override
    public void onDestroyView() {
        super.onDestroyView();           
        unbinder.unbind();
    }

我正在 WebViewFragment 中加载进度条,如下所示:

 public static WebViewFragment createInstance(Bundle urlArgs) {
        WebViewFragment webView = new WebViewFragment();
        webView.setArguments(urlArgs);
        return webView;
    }
    @Override
    public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle saveInstanceState) {
        rootView = layoutInflater.inflate(R.layout.load_web_view, container, false);
        activity = getActivity();
        url=getArguments().getString(Constants.WEB_URL);
        mContext = activity.getApplicationContext();
        serviceAppointmentView = (WebView) rootView.findViewById(R.id.webView);    
        loadData();
        return rootView;
    }   
public void loadData()
{
    serviceAppointmentView.clearView();
    webSettings = serviceAppointmentView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setSupportZoom(true);
    webSettings.setBuiltInZoomControls(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);

    progress = new Progress(activity);
    pDialog = progress.showProgress();
    pDialog.setCanceledOnTouchOutside(true);
    serviceAppointmentView.loadUrl(url);
    serviceAppointmentView.setWebViewClient(new 
    DealerWebViewClient());
}
private class DealerWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progress.dismissProgress(pDialog);
    }
}

我正在使用在线预订选项卡的自定义进度条。这里的问题是在我点击在线预订选项卡之前进度开始加载。请告诉我我在哪里做错了或者如何解决这个问题...感谢您耐心地查看我的代码,任何建议都会对我有所帮助...!

最佳答案

ViewPage的DEFAULT_OFFSCREEN_PAGES值为1,是最小值,不能设置为0。

这意味着当您初始化 viewpager 并添加 fragment 时,当它在位置 0 处初始化 fragment 时,它也会在位置 1 处初始化 fragment 。

有个方法,在Fragment.class里面

setUserVisibleHint(boolean)

当 fragment 对用户可见时调用(在 viewPager 中被选中)。

您可以覆盖它以实现您的加载进度在您需要的时候开始。 请记住,它之前也被解雇了

onCreateView()

您可以检查 View 是否已经膨胀,检查是否有任何 View 不为空。

关于android - 在我选择选项卡之前加载进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805650/

相关文章:

javascript - 解析从 Android 应用程序返回的 javascript 值对象

tabs - Kate "tab-spacing character"删除或关闭

Jquery UI 选项卡小部件 - Href 和 aria-controls

android - 如何开发一个好的触摸GUI?

service - 如何从 Android 中的同步适配器服务访问已经运行的应用程序上下文?

ios-防止滚动时重新加载 UITableView 中的单元格

jquery - 使用 jQuery UI 选项卡。如何使选项卡之一链接到 URL 而不是加载选项卡面板?

android - 带有 URL 的 Parse.com Android 推送通知

java - 打开一个非常大的 JSONArray(在文件中)的效率,只是为了查看第一个位置

android - Webview 中的 Oauth 请求