2015-10-14 88 views
1

我有4個片段更改動作條標題從片段

發行

有當我在它們之間跳躍在每個fragment顯示任何適當的標題。

我創建了一個GIF表明: http://i.imgur.com/QFTdH3w.gif

標題應該是相同的每個片段的文字。

MainActivity看起來是這樣的:

public class MainActivity extends AppCompatActivity { 
    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 

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

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new InfoFragment(), "INFO"); 
     adapter.addFragment(new NavFragment(), "NAV"); 
     adapter.addFragment(new PetrolFragment(), "PETROL"); 
     adapter.addFragment(new CalcFragment(), "CALC"); 
     viewPager.setAdapter(adapter); 
    } 

    public void setActionBarTitle(String title) { 
     getSupportActionBar().setTitle(title); 
    } 

我的片段中的每一個看起來是這樣的:

public class InfoFragment extends Fragment { 

    public InfoFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ((MainActivity) getActivity()).setActionBarTitle("INFO"); // here are other names according to each fragment 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     return inflater.inflate(R.layout.fragment_info, container, false); 
    } 
} 
+0

Follow this link http://stackoverflow.com/question s/15560904/setting-custom-actionbar-title-from-fragment –

+0

你的代碼不工作嗎? – PatrickMA

+0

@Ajit我看到了這個線程,並嘗試了幾個解決這個問題的方法,但是任何幫助我的東西。 我的代碼確實有效,但沒有正確的方式。顯示了其他標題,應該是。 – user3448282

回答

2

我不知道這是否是做一個適當的方式,但你可以添加一個頁面更改監聽器到您的viewpager和onPageSelected方法,您可以更改您的標題:

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

      } 

      @Override 
      public void onPageSelected(int position) { 
       // change your title 
       // inflate menu 
       // customize your toolbar 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 
+0

是的這是好主意,我希望如此 –

+0

好主意!謝謝,現在它可以工作。 – user3448282

+0

我很高興。你能接受我的回答嗎? – savepopulation

1

試試下面的代碼

對於片段標題:

getActivity().getActionBar().setTitle("Fragment1"); 
1

該行添加到您的所有片段onCreateOnCreateView方法

(MainActivity) getActivity()).setActionBarTitle("Your title"); 

默認設置一個片段MainActivity

viewPager.setCurrentItem(0);