2017-02-13 3 views
0

툴바 및 viewPager가있는이 "프레임"앱이 있습니다.Android viewPager는 제목 표시 줄의 제목을 변경하지 않습니다.

BaseActivity :

public abstract class BaseActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(getLayoutResource()); 
    } 


    protected abstract int getLayoutResource(); 
} 

ToolbarActivity :

protected static Toolbar toolbar; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    View contentView = findViewById(R.id.flToolbarContentContainer); 
    if (contentView instanceof ViewGroup) { 
     ((ViewGroup) contentView) 
       .addView(LayoutInflater.from(this) 
         .inflate(getToolbarLayoutResource() 
           , (ViewGroup) contentView, false)); 
    } 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
} 

@Override 
protected int getLayoutResource() { 
    return R.layout.activity_toolbar; 
} 

protected abstract int getToolbarLayoutResource(); 

public void showToolbar() { 
    toolbar.setVisibility(View.VISIBLE); 
} 

public void hideToolbar() { 
    toolbar.setVisibility(View.GONE); 
} 

    public static void setTitle(String title){ 
     toolbar.setTitle(title); 
    } 
} 

MainActivity :

public class MainActivity extends ToolbarActivity { 


    @Override 
    protected int getToolbarLayoutResource() { 
     return R.layout.activity_main; 
    } 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TabFragment homeFragment = new TabFragment(); 
     getSupportFragmentManager() 
       .beginTransaction() 
       .replace(R.id.llMainActivityContainer, homeFragment) 
       .commit(); 
    } 

와. TabFragment : 나는 viewPager에서 새로운 활동을 열고을 완료하면 나는 viewPager 활동에 내 도구 모음의 제목을 변경 onPageSelected 리스너 실행이 아닌를 반환 할 때

public class TabFragment extends Fragment { 

    public static TabLayout tabLayout; 
    public static ViewPager viewPager; 
    public static int int_items = 3 ; 
    private String[] titles = new String[3]; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     titles[0] = "Összes"; 
     titles[1] = "Saját"; 
     titles[2] = "Közelben"; 

     /** 
     *Inflate tab_layout and setup Views. 
     */ 
      View x = inflater.inflate(R.layout.view_pager,null); 
      tabLayout = (TabLayout) x.findViewById(R.id.tabs); 
      viewPager = (ViewPager) x.findViewById(R.id.viewpager); 

     /** 
     *Set an Apater for the View Pager 
     */ 
     viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 

     /** 
     * Now , this is a workaround , 
     * The setupWithViewPager dose't works without the runnable . 
     * Maybe a Support Library Bug . 
     */ 

     tabLayout.post(new Runnable() { 
      @Override 
      public void run() { 
        tabLayout.setupWithViewPager(viewPager); 
        } 
     }); 


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

      } 

      @Override 
      public void onPageSelected(int position) { 
       ToolbarActivity.setTitle(""+titles[position]); 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 
     return x; 

    } 

    class MyAdapter extends FragmentPagerAdapter { 

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

     /** 
     * Return fragment with respect to Position . 
     */ 

     @Override 
     public Fragment getItem(int position) 
     { 
      switch (position){ 
       case 0 : return new PrimaryFragment(); 
       case 1 : return new SecondFragment(); 
       case 2 : return new ThirdFragment(); 
      } 
     return null; 
     } 

     @Override 
     public int getCount() { 

      return int_items; 

     } 

     /** 
     * This method returns the title of the tab according to the position. 
     */ 

     @Override 
     public CharSequence getPageTitle(int position) { 

      return titles[position]; 
     } 
    } 

내 문제는, 입니다.

어떻게 해결할 수 있습니까?

감사합니다.

답변

0

시도

getActivity.setTitle(""+titles[position]); 
+0

당신을 감사합니다! 당신은 내 하루를 절약했습니다 – David

+0

당신은 환영합니다 :) –

관련 문제