ViewPager中的标签在序列中没有响应

用户名

在我的Android应用程序中,我正在使用具有4个选项卡的选项卡滑动视图,第一个选项卡在UI上显示数据,并通过AsyncTask调用WS,WS返回的数据正在填充pojo,此pojo传递给其他选项卡(片段)我面临的问题是,当我单击第一个选项卡时,选项卡未按顺序执行,在调用WS之前,第一个和第二个选项卡正在执行,因为这种奇怪的行为,我无法在第二个选项卡中获取数据

活动:

   public class TabSwipeActivity extends FragmentActivity implements ActionBar.TabListener, DetailsFoeFragment.ExistingFeatureDataInt

{
    ActionBar actionbar;
    ViewPager viewpager;
    FragmentPageAdapter ft;
    ExistingData existingData;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabswipe);
        ArrayList<String> detailList =this.getIntent().getStringArrayListExtra("FeatureData");      

        viewpager = (ViewPager) findViewById(R.id.pager1);
        ft = new FragmentPageAdapter(getSupportFragmentManager());

        if(detailList!=null)
            ft.setDetailList(detailList);

    //  ft.setExistingData(getExistingData());
        actionbar = getActionBar();
        viewpager.setAdapter(ft);

        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionbar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

        actionbar.addTab(actionbar.newTab().setText("Details").setTabListener(this),0,true);
        actionbar.addTab(actionbar.newTab().setText("Action Taken").setTabListener(this),1,false);
        actionbar.addTab(actionbar.newTab().setText("Before Photos").setTabListener(this),2,false);
        actionbar.addTab(actionbar.newTab().setText("After Photos").setTabListener(this),3,false);

        viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }

            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            public void onPageSelected(int arg0) {
                actionbar.setSelectedNavigationItem(arg0);

            }

        });
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        viewpager.setCurrentItem(tab.getPosition());

    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }


////
Adapter:
/////



public class FragmentPageAdapter extends FragmentPagerAdapter {


    Bundle bundle= new Bundle();
    ExistingData existingData = new ExistingData();;

    public FragmentPageAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }
    Fragment fragment;
    @Override
    public Fragment getItem(int arg0) {
        // TODO Auto-generated method stub
        switch (arg0) {
        case 0:

            fragment = new DetailsFoeFragment();
            bundle.putStringArrayList("details",detailList);         
            fragment.setArguments(this.bundle);
            return fragment;
        case 1:
              fragment= new ActionFoeFragment();        
              bundle.putParcelableArrayList("actions",(ArrayList)existingData.getActionList());
            //  bundle.putParcelableArrayList("actions",(ArrayList)existingData.getActionList());
             // bundle.putString("featureId",detailList.get(2));         
              fragment.setArguments(this.bundle);
              return fragment;

        case 2:
            fragment = new PhotoBeforeFoeFragment();
        //  bundle.putStringArrayList("beforeImage",null);
            bundle.putStringArrayList("beforeImage",(ArrayList<String>)existingData.getBeforeImagePath());       
            fragment.setArguments(this.bundle);
            return fragment;
        case 3:
            fragment = new PhotoAfterFoeFragment();
            bundle.putStringArrayList("afterImage",(ArrayList<String>)existingData.getAfterImagePath());         
            fragment.setArguments(this.bundle);
            return fragment;    

        default:
            break;
        }
        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 4;
    }

    ArrayList<String> detailList;
    public void setDetailList(ArrayList<String> detailList) {
        this.detailList = detailList;
    }


    public void setExistingData(ExistingData existingData) {
        this.existingData = existingData;
    }
    @Override
    public int getItemPosition(Object object) {
            return POSITION_NONE;
    } 

}

请提供输入内容谢谢

Xcihnegn

一种解决方案:

  • 在您的活动中,使用Asynctask运行WS,然后调用需要数据的片段以更新视图

     class yourActivity {
    
    
         @Override 
         public void onCreate(Bundle savedInstanceState) {
    
            ... ...
    
            //set up your tabs with fragments
                ... ...
    
            //WS: Your asynctask requesting data from server 
            (new AsyncTask<... ...>() {
    
              ... ...
    
              @Override
              protected void onPostExecute(dataSet) {
                  //here you have got your data set from server then inform tabs to update
                  YourFragment frag = (YourFragment)getSupportFragmentManager().findFragmentById(R.id.your_fragment);
    
                  frag.updateView(dataSet);
              } 
    
           }).execute();
    
    
       }
    
    
    }
    
  • 在每个需要共享数据集的选项卡/片段中,定义一种使用数据集更新视图的方法

     class YourFragment extebds Fragment{
    
          ... ...
    
         public void updateView(dataSet)
         {
            //update this fragment view with dataSet
            //and stop your waiting dialog
         }
     }
    

希望此解决方案对您有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.gif在python中没有响应

来自分类Dev

Docker中的Logstash没有响应

来自分类Dev

UIButton 在 NavigationController 中没有响应

来自分类Dev

uistackview 中 uview 中的按钮没有响应 - ios

来自分类Dev

<a> 标签在 asp:repeater 中没有正确重复

来自分类Dev

IIFE中的Vanilla Javascript Ajax调用没有响应

来自分类Dev

Telegram bot在群聊中没有响应

来自分类Dev

Angular ng-if在编译中没有响应

来自分类Dev

第二列中的UICollectionViewCells没有响应

来自分类Dev

如何在“ laravel”中设置没有响应的cookie

来自分类Dev

在iOS 8中popoverContentSize没有响应

来自分类Dev

Android:ArrayAdapter中的onClickListener没有响应

来自分类Dev

DhcpInfo没有响应Android Lollipop中的网络掩码

来自分类Dev

SwiftUI:UIAlertController的textField在UIAlertAction中没有响应

来自分类Dev

为什么我的UItableView中的按钮没有响应?

来自分类Dev

按钮对Ionic中的单击没有响应

来自分类Dev

窗口在小型设备中没有响应

来自分类Dev

gridview 中的按钮没有响应 onClickListener

来自分类Dev

我的按钮在 android studio 中没有响应

来自分类Dev

在 Node 中从 CronJob 调用 API 没有响应

来自分类Dev

python 3中的get请求站点没有响应

来自分类Dev

addEventListener“click”在 ejs 文件中没有响应

来自分类Dev

Android Pie - 在 Volley 中对 JSONObjectRequest 没有响应

来自分类Dev

没有响应主体的成功响应头是否会导致AJAX请求中的错误?

来自分类Dev

Android中没有Viewpager的工具栏中的标签

来自分类Dev

ActionListener没有响应?

来自分类Dev

UISearchController没有响应

来自分类Dev

OnClickListener没有响应

来自分类Dev

imagecopymerge没有响应

Related 相关文章

热门标签

归档