현재 메인에서 뷰페이저 탭레이아웃 툴바를 사용하고 있습니다. 여기서 검색을 눌렀을 때 SearchAsyncTask을 시행합니다. 그러면 SearchAsyncTask의 onPostExecute에서 long값을 하나 얻어내어 이 long값을 각각의 탭(프래그먼트로 보내서 프래그먼트에서 다른 AsyncTask를 하려고 합니다. 그런데 long값을 뷰페이저속의 프래그먼트로 어떻게 보내야 하는지를 링크들을 봐도 잘 모르겟네요 ㅜ
이건 메인코드입니다.
searchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = inputName.getText().toString();
new SearchAsyncTask(name).execute("유알엘");
}
});
toolbar = (Toolbar) findViewById(R.id.searchToolbar);
setSupportActionBar(toolbar);
toolbar.setTitle("검 색");
tabLayout = (TabLayout) findViewById(R.id.searchTabLayout);
tabLayout.addTab(tabLayout.newTab().setText("ㅁㅁ"));
tabLayout.addTab(tabLayout.newTab().setText("ㄴㄴ"));
tabLayout.addTab(tabLayout.newTab().setText("ㄹㄹ"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewPager = (ViewPager) findViewById(R.id.searchViewPager);
SearchViewPagerAdapter adapter = new SearchViewPagerAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
viewPager.setOffscreenPageLimit(3);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
이건 메인함수 속의 뷰페이저 어댑터입니다. long 값을 어떻게 보내줘야 하나요 ㅜ
private class SearchViewPagerAdapter extends FragmentStatePagerAdapter {
int tabCount;
public SearchViewPagerAdapter(FragmentManager fm, int tabCount) {
super(fm);
this.tabCount = tabCount;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new STab1();
case 1:
return new STab2();
case 2:
return new STab3();
default:
return null;
}
}
public Object instantiateItem(ViewGroup container, int position) {
Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
switch (position) {
case 0:
sTab1 = (STab1) createdFragment;
break;
case 1:
sTab2 = (STab2) createdFragment;
break;
case 2:
sTab3 = (STab3) createdFragment;
break;
}
return createdFragment;
}
@Override
public int getCount() {
return tabCount;
}
}