Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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 在设置ViewPager适配器之前异步调用并向片段传递值_Android_Android Fragments_Android Asynctask_Android Viewpager - Fatal编程技术网

Android 在设置ViewPager适配器之前异步调用并向片段传递值

Android 在设置ViewPager适配器之前异步调用并向片段传递值,android,android-fragments,android-asynctask,android-viewpager,Android,Android Fragments,Android Asynctask,Android Viewpager,我在MainActivity类中有一个SlideTabLayout。我正在活动中执行异步网络操作,并将获取的结果传递给SlideTabLayout中所需的片段。但适配器正在将片段设置为null值,我的网络操作稍后将获取数据,因为我无法将值传递给片段。如果您可以看到下面的代码。ArrayList值在初始阶段为0,并且活动正在将null值传递给所有片段。之后,ArrayList值将得到更新,但不会传递给片段 protected void onCreate(Bundle savedInstanceSt

我在MainActivity类中有一个SlideTabLayout。我正在活动中执行异步网络操作,并将获取的结果传递给SlideTabLayout中所需的片段。但适配器正在将片段设置为null值,我的网络操作稍后将获取数据,因为我无法将值传递给片段。如果您可以看到下面的代码。ArrayList值在初始阶段为0,并且活动正在将null值传递给所有片段。之后,ArrayList值将得到更新,但不会传递给片段

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_meat);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    CatalogueService catalogueService = App42API.buildCatalogueService();
    Intent categoryIntent = getIntent();
    catalogueName = categoryIntent.getStringExtra("CATALOGUE");
    viewPager = (ViewPager) findViewById(R.id.viewpager_meat);

    tabLayout = (TabLayout) findViewById(R.id.tabs_meat);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MeatActivity.this,CartActivity.class);
            startActivity(intent);
        }
    });
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    String chickenCategoryName = "Chicken";
    catalogueService.getItemsByCategory(catalogueName, chickenCategoryName, new App42CallBack() {
        @Override
        public void onSuccess(Object o) {
            Catalogue catalogue = (Catalogue) o;
            for (int i = 0; i < catalogue.getCategoryList().size(); i++) {
                String category = catalogue.getCategoryList().get(i).getName();
                if (category.equals("Chicken")) {
                    chickenList = catalogue.getCategoryList().get(i).getItemList();
                }
            }
            Log.e("Chicken Size 1",String.valueOf(chickenList.size()));
        }

        @Override
        public void onException(Exception e) {

            final String error = e.getMessage();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MeatActivity.this,error,Toast.LENGTH_LONG).show();
                }
            });

        }
    });

    String muttonCategoryName = "Mutton";
    catalogueService.getItemsByCategory(catalogueName, muttonCategoryName, new App42CallBack() {
        @Override
        public void onSuccess(Object o) {
            Catalogue catalogue = (Catalogue) o;
            for (int i = 0; i < catalogue.getCategoryList().size(); i++) {
                String category = catalogue.getCategoryList().get(i).getName();
                if (category.equals("Mutton")) {
                    muttonList = catalogue.getCategoryList().get(i).getItemList();
                    break;
                }

            }
        }

        @Override
        public void onException(Exception e) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MeatActivity.this,"Unable to fetch data",Toast.LENGTH_SHORT).show();
                }
            });
        }
    });

    String seaFoodName = "Sea Foods";
    catalogueService.getItemsByCategory(catalogueName, seaFoodName, new App42CallBack() {
        @Override
        public void onSuccess(Object o) {
            Catalogue catalogue = (Catalogue) o;
            for (int i = 0; i < catalogue.getCategoryList().size(); i++) {
                String category = catalogue.getCategoryList().get(i).getName();
                if (category.equals("Sea Foods")) {
                    seaFoodList = catalogue.getCategoryList().get(i).getItemList();
                    break;
                }

            }
        }

        @Override
        public void onException(Exception e) {

        }
    });

    setupViewPager(viewPager);
    tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new OneFragment(activityId, chickenList), "CHICKEN");
    Log.e("Chicken Size 2",String.valueOf(chickenList.size()));
    adapter.addFragment(new TwoFragment(activityId,muttonList), "MUTTON");
    adapter.addFragment(new ThreeFragment(activityId,seaFoodList), "SEAFOODS");
    viewPager.setAdapter(adapter);
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_-meat);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
catalogeservice catalogeservice=App42API.buildcatalogeservice();
Intent categoryIntent=getIntent();
catalogename=categoryIntent.getStringExtra(“目录”);
viewPager=(viewPager)findViewById(R.id.viewPager\u-meat);
tabLayout=(tabLayout)findViewById(R.id.tabs\u-meat);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(MeatActivity.this、CartActivity.class);
星触觉(意向);
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
字符串chickenCategoryName=“Chicken”;
CatalogenService.getItemsByCategory(Catalogename,chickenCategoryName,new App42CallBack(){
@凌驾
成功时的公共无效(对象o){
目录=(目录)o;
对于(int i=0;i
实际上,问题是您正在进行异步网络调用。 做这样的事-

声明一个类级变量计数器 整数计数器

现在,在三个onSuccess()方法中的每一个方法中,只需执行以下操作

counter ++;
setupViewPager();
在setupViewPager方法中添加检查

setupViewPager(ViewPager viewPager) {
    if(counter == 3){
        // your code to set the adapter
    }
}

实际上,问题是您正在进行异步网络调用。 做这样的事-

声明一个类级变量计数器 整数计数器

现在,在三个onSuccess()方法中的每一个方法中,只需执行以下操作

counter ++;
setupViewPager();
在setupViewPager方法中添加检查

setupViewPager(ViewPager viewPager) {
    if(counter == 3){
        // your code to set the adapter
    }
}