0

AsyncTaskを宣言したクラスではなく、別のフラグメントからAsyncTaskを呼び出そうとしています。ビューパイアでカスタムタブレイアウトを使用しました。タブレイアウトには4つのタブがあります。私は、特定のタブが選択されているときにWebサービスを呼びたいと思います。だから、私はTablayoutを使ったメイン・フラグメントでOnTabSelected()を書いた。私のAsyncTaskは2番目のタブにあります。 OnTabSelected()メソッドで2番目のタブが選択されているときにWebサービスを呼び出す必要があります。私はアンドロイド開発の新人です。それではどうすればいいのですか?このようなTablayoutをビューページャーで使用しているときに別のフラグメントからAsyncTaskを呼び出す方法は?

答えて

0

使用viewpager's addOnPageChangeListenerイベント:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 
       if(position == 1){ 
        //call your webservice here 
       } 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

ノートそのページの位置は0で始まるので、あなたの2番目のタブ位置は1です。

編集:現在のフラグメントのインスタンスを取得する方法

Fragment f = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container); 
if (f instanceof SecondFragmentClass) { 
    f.doSomething(); 
} 

注:タグを提供している場合は、findFragmentByIdの代わりにfindFragmentByTag()を使用できます。

更新:

if(position == 1){ 
     Fragment page = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + ViewPager.getCurrentItem()); 
     // based on the current position you can then cast the page to the correct 
     // class and call the method: 
     if (page != null) { 
       ((SecondFragmentClass)page).updateList("new item");  
     } 
    return true; 
    } 

チェックこれは私が現在のフラグメントのインスタンスがタスクを実行するための第2のフラグメントを意味取ることができますどのようにhttps://stackoverflow.com/a/18611036/5895830

+0

understandig良い方向にANS? – vaibhav

+0

更新された回答を確認する –

関連する問題