편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2016.09.26

    뷰페이저 메인에서 프래그먼트로 값 전달 질문입니다.


    현재 메인에서 뷰페이저 탭레이아웃 툴바를 사용하고 있습니다. 여기서 검색을 눌렀을 때 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;
        }
    }
    
  • 프로필 kyudongPark님의 편집
    날짜2016.09.25

    뷰페이저 메인에서 프래그먼트로 값 전달 질문입니다.


    현재 메인에서 뷰페이저 탭레이아웃 툴바를 사용하고 있습니다. 여기서 검색을 눌렀을 때 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;
    }
    

    }