Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决android选项卡布局切换问题_Android - Fatal编程技术网

如何解决android选项卡布局切换问题

如何解决android选项卡布局切换问题,android,Android,我正在开发一个android应用程序,它有四个带有tablayout的片段,每个片段都有一个连接错误对话框 第一个问题是,当我启动我的应用程序时,有四个片段可以工作 同时在同一时间。所以,当我发生连接错误四 当我切换到第二个选项卡时,对话框显示在第一个片段中 它不显示他的对话框,因为他的对话框显示在第一个对话框中 碎片 第二个问题是,我使用滑动刷新布局创建片段 我在onCreate方法中调用onRefresh方法。 当我启动应用程序时,第一个片段数据从服务器加载,但 当我将第一个选项卡切换到第

我正在开发一个android应用程序,它有四个带有tablayout的片段,每个片段都有一个连接错误对话框

  • 第一个问题是,当我启动我的应用程序时,有四个片段可以工作 同时在同一时间。所以,当我发生连接错误四 当我切换到第二个选项卡时,对话框显示在第一个片段中 它不显示他的对话框,因为他的对话框显示在第一个对话框中 碎片
  • 第二个问题是,我使用滑动刷新布局创建片段 我在onCreate方法中调用onRefresh方法。 当我启动应用程序时,第一个片段数据从服务器加载,但 当我将第一个选项卡切换到第二个选项卡时,不会从中加载他的数据 但当我将第一个选项卡切换到第三个选项卡时,这就是工作。 另外,当我将第二个选项卡切换到第三个选项卡时,它不会从中加载数据 但当我将第二个选项卡切换到第四个选项卡时,它就正常工作了。它是 仅在切换选项卡时工作,其中一个选项卡不同。有什么好办法吗 解决这些问题
我在网上搜索了这些问题,但没有得到答案。 请任何人帮助我。提前谢谢。。。。。 对不起,我的英语很差

这是tablyout代码

这是MyAdapter类


在每个片段中重写setUserVisibleHint,并用if(isVisibleToUser)而不是Oncreate编写对话框代码。这应该能解决你的问题

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




    if(isVisibleToUser) {

     //dialog box code here 


     }

}

第一个问题:您需要检查Onresume()方法而不是oncreate()中的连接错误。请访问此链接以解决您的问题,但我的对话框是在另一个类中创建的。我如何调用它。我作为应答者共享在FragmentActivity中编写此方法。公共片段getFragment(int位置){Fragment Fragment=(Fragment)viewPager.getAdapter().instanceItem(viewPager,position);if(NoticeBoardFragment的片段实例){NoticeBoardFragment对象=(NoticeBoardFragment)Fragment;return object;}else if(EventsFragment的片段实例){EventsFragment object=(EventsFragment)fragment;return object;。将唯一的int FRAGMENTAG与网络调用一起传递,并从每个片段调用Dailogalert
class MyAdapter extends FragmentStatePagerAdapter {
        int num_of_tab;

        public MyAdapter(FragmentManager fm, int num_of_tab) {
            super(fm);
            this.num_of_tab = num_of_tab;
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    NoticeBoardFragment noticeBoardFragment = new NoticeBoardFragment();
                    return noticeBoardFragment;
                case 1:
                    NewsFragment newsFragment = new NewsFragment();
                    return newsFragment;
                case 2:
                    EventsFragment eventsFragment = new EventsFragment();
                    return eventsFragment;
                case 3:
                    ResultFragment resultFragment = new ResultFragment();
                    return resultFragment;
                default:
                    return null;
            }
        }

        @Override
        public int getCount() {
            return num_of_tab;
        }

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




    if(isVisibleToUser) {

     //dialog box code here 


     }

}