안녕하세요 초보 개발자 입니다.
예를 들어 A.Activity에서 버튼을 클릭시 B.Activity로 넘어가 A.Activity선택한 탭 구성 화면을 보여주고 싶습니다. 제가 구현한 방법은 putExtra에 tablayout item 번호를 지정하여 ViewPager Adapter에 번호를 넣어 띄우는 방식을 사용해봤으나 당연하게도 tabIdx에 넘어온 값만 Viewpager Adapter에 저장되어 모든탭이 똑같이 보입니다.
몇날 며칠을 고민을 해봐도 방법이 나오지 않아 선배님들께 조언을구합니다.
감사합니다.
[소스코드]
putExtra를 사용하여 번호를 Tablayout이 있는 class로 넘깁니다
private void wordMap1(){
Intent my_word = new Intent(HomeActivity.this, Word_Map_table.class);
my_word.putExtra("tabIdx", 0);
startActivity(my_word);
}
private void wordMap2(){
Intent my_word = new Intent(HomeActivity.this, Word_Map_table.class);
my_word.putExtra("tabIdx", 1);
startActivity(my_word);
}
private void wordMap3(){
Intent my_word = new Intent(HomeActivity.this, Word_Map_table.class);
my_word.putExtra("tabIdx", 2);
startActivity(my_word);
}
번호를 받는 class입니다.
Word_Map_Page_Adapter word_map_page_adapter = new Word_Map_Page_Adapter(getSupportFragmentManager(), tabLayout.getTabCount(), tabIdx);
이부분에서 전달받은 번호를 Adapter로 넘겨줍니다.
mContext = getApplicationContext();
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
//탭 텍스트
tabLayout.addTab(tabLayout.newTab().setCustomView(createTabView("탭 1", 0)));
tabLayout.addTab(tabLayout.newTab().setCustomView(createTabView("탭 2", 1)));
tabLayout.addTab(tabLayout.newTab().setCustomView(createTabView("탭 3", 2)));
//main에서 탭 idx값 넘어옴
tabIdx = getIntent().getIntExtra("tabIdx", 0);
Log.d("tabIdxChk", tabIdx + "");
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
Word_Map_Page_Adapter word_map_page_adapter = new Word_Map_Page_Adapter(getSupportFragmentManager(), tabLayout.getTabCount(), tabIdx);
viewPager.setAdapter(word_map_page_adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(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) {
}
});
init();
}
private View createTabView(String tabName, int position) {
View tabView = LayoutInflater.from(mContext).inflate(R.layout.tab_custom, null);
TextView txt_name = (TextView) tabView.findViewById(R.id.txt_name);
txt_name.setText(tabName);
if (position == 0){
((ImageView) tabView.findViewById(R.id.Tab_img)).setImageResource(R.drawable.tabbtn01);
}
if (position == 1){
((ImageView) tabView.findViewById(R.id.Tab_img)).setImageResource(R.drawable.tabbtn02);
}
if (position == 2){
((ImageView) tabView.findViewById(R.id.Tab_img)).setImageResource(R.drawable.tabbtn03);
}
return tabView;
}
ViewPagerAdapter입니다.
public Word_Map_Page_Adapter(FragmentManager fm, int tabCount, int tabIdx) {
super(fm);
this.tabCount = tabCount;
this.tabIdx = tabIdx;
}
@Override
public Fragment getItem(int i) {
Log.d("i",i+"");
Log.d("Tabidx",tabIdx+"");
if (tabIdx == 0){
Fragment_Word_Map_One tabOne = new Fragment_Word_Map_One();
return tabOne;
}else if(tabIdx == 1) {
Fragment_Word_Map_Two tabTwo = new Fragment_Word_Map_Two();
return tabTwo;
}else if(tabIdx == 2){
Fragment_Word_Map_Three tabThree = new Fragment_Word_Map_Three();
return tabThree;
}
return null;
}
@Override
public int getCount() {
return tabCount;
}
}