2017-04-25 7 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を持つことができます。

最初にタイトルをMACARONSに設定し、ページが変更されたときにタイトルを変更します。

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

ですのを参照して、ユーザーに表示されているかどうかを確認してください。

フォームドキュメント:

は、このフラグメントの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 { 
     } 
    } 
} 
関連する問題