2017-04-25 1 views
0

ViewPager 페이지에 카테고리 바를 추가하고 싶습니다. 범주 제목이 ViewPager 페이지 변경에 따라 변경됩니다. 나는이 일을 시도했지만 ViewPager은 잘 작동하지만 제목은 바뀌지 않습니다. enter image description here뷰 페이지 설정 텍스트 기능

내가 PagerAdapter에 아래 코드를 추가 :

는 페이지 레이아웃입니다

private class MyPagerAdapter extends FragmentPagerAdapter { 


public MyPagerAdapter(FragmentManager fm) { 

    super(fm); 
} 

@Override 
public Fragment getItem(int pos) { 

    TextView cate_title = (TextView) getActivity().findViewById(R.id.cate_title); 
    String title_name = ""; 
    switch(pos) { 
     case 0: 
      title_name = "MACARONS"; 
      cate_title.setText(title_name); 
      return new SP_macarons(); 
     case 1: 
      title_name = "CHOCOLATE"; 
      cate_title.setText(title_name); 
      return new SP_chocolate(); 
     case 2: 
      title_name = "CHEESE MOUSSE"; 
      cate_title.setText(title_name); 
      return new SP_cheese_mousse(); 
     default: 
      break; 
    } 
return null; 
} 

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

이는 Fragment 코드

public class SpecialCake extends Fragment { 
private ViewPager viewPager; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.special_cake, container, false); 


    final ViewPager pager = (ViewPager)view.findViewById(R.id.cate_pager); 
    pager.setAdapter(new MyPagerAdapter(getChildFragmentManager())); 

    ImageButton prebtn = (ImageButton) view.findViewById(R.id.leftarrow); 
    prebtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      pager.setCurrentItem(getItem(-1), true); //getItem(-1) for previous 
     } 
     private int getItem(int i) { 
      return pager.getCurrentItem() + i; 
     } 
    }); 
    ImageButton nxtbtn = (ImageButton) view.findViewById(R.id.rightarrow); 
    nxtbtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      pager.setCurrentItem(getItem(+1), true); //getItem(-1) for previous 
     } 
     private int getItem(int i) { 
      return pager.getCurrentItem() + i; 
     } 
    }); 

    return view; 
} 

답변

0

당신은 OnPageChangeListener을 가질 수 있습니다.

는 처음 마카롱에 제목을 설정 한 다음 때 페이지가 변경 제목을 변경합니다.

textView.setTitle("MACRONS); 

그런

pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) { 
    String title_name = ""; 
    // depending on the position do something 
    if(position==0) 
    { 
     title_name = "MACARONS"; 
    } 
    else if(position==1) 
    { 
     title_name = "CHOCOLATE"; 
    } 
    else 
    { 
     title_name = "MACARONS"; 
    } 
    // Now set title to text 
    textView.setTitle(title_name); 
    } 
+0

나를 위해 일입니다! 내가 처음 페이지로 클릭 할 때하지만 난 질문 이의 cate_title가 비어 있습니다. 내가 다음을 클릭하고 첫 페이지로 다시 클릭 한 후 다음 제목은 그냥 보여줍니다. – JsLaw

+0

시작 부분에 제목을 설정하십시오. OnpageChangeListener 전에. 나는 그 대답에 덧붙였다. – Raghunandan

+0

문제 해결을 도와 주셔서 감사합니다 !! – JsLaw

0

당신은 사용할 수 있습니다 setUserVisibleHint을 사용자의 viewpager fragment에 표시하여 사용자에게 표시되는지 여부를 결정하십시오.

문서 양식 :

이 단편의 UI는 사용자에게 현재 표시되는지 여부에 대해 시스템에 대한 힌트를 설정한다. 이 힌트가 디폴트는 true와 조각 인스턴스 상태에서 지속적 저장하고 복원 할 수 있습니다.

TextViewTextView cate_title = (TextView) getActivity().findViewById(R.id.cate_title);을 조각의 레이아웃에 추가하십시오.

그리고 다음 코드를 추가합니다

public class SP_macarons extends Fragment { 

    @Override 
    public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 
     if (isVisibleToUser) { 
      title_name = "MACARONS"; 
      cate_title.setText(title_name); //card_title should be defined in your fragment 
     } 
     else { 
     } 
    } 
}