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

viewpager에서 fragment 교체 질문

0 추천
public class Tab extends ActionBarActivity implements ActionBar.TabListener, SearchView.OnQueryTextListener {
    SectionsPagerAdapter mSectionsPagerAdapter;
    public static ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab);

        final ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        actionBar.setDisplayHomeAsUpEnabled(true);

        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
        actionBar.setIcon(R.drawable.ic_la);
        
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        for (int i = 0; i < 3; i++) {
            actionBar.addTab(
                    actionBar.newTab()
                            .setText(mSectionsPagerAdapter.getPageTitle(i))
                            .setTabListener(this)
            );
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_tab, menu);

        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onQueryTextSubmit(String s) {

        return true;
    }
    @Override
    public boolean onQueryTextChange(String s) {

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_search:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 1:     //1
                    return SectionsFragment1.newInstance(position + 1);
                case 2:     //3
                    return SectionsFragment2.newInstance(position + 1);
                case 0:     //
                    return SectionsFragment3.newInstance(position + 1);
            }
            return null;
        }

        @Override
        public int getCount() {
            return 3;
        }

viewpager와 actionbar를 이용하여 ui를 구성하여 상단의 탭바를 누르면 해당하는 fragment로 이동하는 것까지는 구현하였습니다.

근데 fragment안에서 버튼이벤트를 통해 다른 fragment로 이동하고 싶은데 어떻게 해야할지 막막합니다...

 

탭1 - fragment1_1

     - fragment1_2

     - fragment1_3

탭2 - fragment2_1

     - fragment2_2

이런 방식으로 구현하고 싶습니다!

jhh1117 (240 포인트) 님이 2016년 6월 30일 질문

1개의 답변

0 추천
 
채택된 답변
viewpager가 3개가 필요합니다

1번 viewpager : 탭1과 탭2를 포함합니다

2번 viewpager : 탭1의 fragment 1_1~1_3을 포함합니다

3번 viewpager : 탭2의 fragment 2_1, 2_2를 포함합니다

viewpager가 3개니 adapter도 당연히 3개가 필요하겠죠

해당 예제는 google에서 android viewpager inside viewpager로 검색해보시면 많습니다
prague (26,200 포인트) 님이 2016년 6월 30일 답변
jhh1117님이 2016년 7월 1일 채택됨
검색 해보니 많이나오네요 답변 감사합니다!
...