마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

viewpager 내용을 완전이 다른 내용으로 바꾸고 싶습니다.

0 추천

actionbar list navigation 선택시 viewpager fragment 를 전부 변경하고 싶습니다.

현재 actionbar sherlock 사용하구있구요.

// ActionBar 의 Navigation 항목 이용..
// 원래.. List Navigation 과 Tab Navigation 두개가 제공되는데..
// 둘을 같이 사용하지 못해서 List Navigation 은 Action Bar 이용..
// Tab 은 직접.. TabHost 로..

구현했는데요

List Navigation 메뉴에 {1번,2번,3번}으로 넣어놓구

1번에 텝 메뉴 4개

2번에 텝 메뉴 4개

3번에 텝 메뉴 4개씩 해서 tabhost 메뉴 변경까지했는데요

viewpager 내용은 처음에 출력된 화면 그대로 나오고

무슨 짓을 해도 새로 변경이 안되네요.

2번, 3번 클릭시 현재 보여지고 있는 viewpager 내용을 전부 지우고 새로운 화면 4개로 채우고 싶습니다.

class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;

public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
// TODO Auto-generated constructor stub
super(fm);
this.fragments = fragments;}

@Override
public int getCount() {
// TODO Auto-generated method stub
return fragments.size();
 

=====================================

private void initTab() {
// tab 전체..
host = (TabHost) findViewById(android.R.id.tabhost);
host.setup();
host.clearAllTabs();

TabSpec spec = null;// Tab 화면 하나를 표현하는 객체..
// Tab 버튼과 본문이 결합된 구조..

spec = host.newTabSpec("tab1");
spec.setIndicator("순서");// 버튼 문자열..
spec.setContent(new TabFactory());// 본문..
host.addTab(spec);

spec = host.newTabSpec("tab2");
spec.setIndicator("일정");// 버튼 문자열..
spec.setContent(new TabFactory());// 본문..
host.addTab(spec);

// tab 버튼 클릭시 이벤트 연결..
host.setOnTabChangedListener(this);
}
=========

public void chageViewPager(int selected) {

List<Fragment> fragments = new ArrayList<Fragment>();
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.removeAllViews();

pagerAdapter.clearall();
fragments.clear();


if (selected == 0) {
fragments.add(Fragment.instantiate(this, list1.class.getName()));
fragments.add(Fragment.instantiate(this, list12.class.getName()));
fragments.add(Fragment.instantiate(this, list13.class.getName()));
fragments.add(Fragment.instantiate(this, list14.class.getName()));
} else if (selected == 1) {

fragments.add(Fragment.instantiate(this, list15.class.getName()));
fragments.add(Fragment.instantiate(this, list16.class.getName()));
fragments.add(Fragment.instantiate(this, list17.class.getName()));
fragments.add(Fragment.instantiate(this, list18.class.getName()));

} else if (selected == 2) {

.......................................

}
pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), fragments);
pagerAdapter.setFragments(fragments);
viewPager.setAdapter(pagerAdapter);
pagerAdapter.notifyDataSetChanged();

viewPager.setOnPageChangeListener(this);

===============


// Action Bar 의 Navigation 선택 이벤트 처리..
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
// TODO Auto-generated method stub

if (itemPosition == 0) {
initTab();
chageViewPager(0);
} else if (itemPosition == 1) {
initTab2();
chageViewPager(1);
} else if (itemPosition == 2) {
initTab3();
chageViewPager(2);
}

return false;

 

kimdaesuk (140 포인트) 님이 2013년 11월 11일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...