2014-03-30 42 views
0

我不知道。Android:更改操作欄中的標籤

我想改變標籤在動作條到新的標籤頁時,我按下按鈕是查找幻燈片馬努項目的人 。

在按下按鈕之前 tab1 | tab2 | tab3

按下FindPeople按鈕後。 new1 | new2 | new3

以下是我的代碼。你可以幫我嗎?非常感謝! :)

MainActivity.java。

public class MainActivity extends FragmentActivity implements TabListener { 
    @SuppressLint("NewApi") @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     getActionBar().setDisplayShowHomeEnabled(false);    
     getActionBar().setDisplayShowTitleEnabled(false); 
     //getActionBar().hide(); 
     mTitle = mDrawerTitle = getTitle(); 

     // load slide menu items 
     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); 

     // nav drawer icons from resources 
     navMenuIcons = getResources() 
       .obtainTypedArray(R.array.nav_drawer_icons); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.list_slidermenu); 

     navDrawerItems = new ArrayList<NavDrawerItem>(); 

     // adding nav drawer items to array 
     // Home 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); 
     // Find People 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); 
     // Photos 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); 
     // Communities, Will add a counter here 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22")); 
     // Pages 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); 
     // What's hot, We will add a counter here 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+")); 


     // Recycle the typed array 
     navMenuIcons.recycle(); 

     mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); 

     // setting the nav drawer list adapter 
     adapter = new NavDrawerListAdapter(getApplicationContext(), 
       navDrawerItems); 
     mDrawerList.setAdapter(adapter); 

     // enabling action bar app icon and behaving it as toggle button 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.ic_drawer, //nav menu toggle icon 
       R.string.app_name, // nav drawer open - description for accessibility 
       R.string.app_name // nav drawer close - description for accessibility 
     ) { 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
       // calling onPrepareOptionsMenu() to show action bar icons 
       invalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getActionBar().setTitle(mDrawerTitle); 
       // calling onPrepareOptionsMenu() to hide action bar icons 
       invalidateOptionsMenu(); 
      } 
     }; 


     if (savedInstanceState == null) { 
      // on first time display view for first nav item 
      displayView(0); 
     } 


     // Set up the action bar. 
       //final ActionBar actionBar = getActionBar(); 
     getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

       // Create the adapter that will return a fragment for each of the three 
       // primary sections of the app. 
       mSectionsPagerAdapter = new SectionsPagerAdapter(
         getSupportFragmentManager()); 

       // Set up the ViewPager with the sections adapter. 
       mViewPager = (ViewPager) findViewById(R.id.pager); 
       mViewPager.setAdapter(mSectionsPagerAdapter); 

       // When swiping between different sections, select the corresponding 
       // tab. We can also use ActionBar.Tab#select() to do this if we have 
       // a reference to the Tab. 
       mViewPager 
         .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
          @Override 
          public void onPageSelected(int position) { 
           getActionBar().setSelectedNavigationItem(position); 
          } 
         }); 

       // For each of the sections in the app, add a tab to the action bar. 
       for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
        // Create a tab with text corresponding to the page title defined by 
        // the adapter. Also specify this Activity object, which implements 
        // the TabListener interface, as the callback (listener) for when 
        // this tab is selected. 
        getActionBar().addTab(getActionBar().newTab() 
          .setText(mSectionsPagerAdapter.getPageTitle(i)) 
          .setTabListener(this)); 
       } 
// 

    } 

    /** 
    * Slide menu item click listener 
    * */ 
    private class SlideMenuClickListener implements 
      ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
       long id) { 
      // display view for selected nav drawer item 
      displayView(position); 
     } 
    } 
    //tab 
    public void onTabSelected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
     // When the given tab is selected, switch to the corresponding page in 
     // the ViewPager. 
     mViewPager.setCurrentItem(tab.getPosition()); 
    } 


    public void onTabUnselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 


    public void onTabReselected(ActionBar.Tab tab, 
      FragmentTransaction fragmentTransaction) { 
    } 

    /** 
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
    * one of the sections/tabs/pages. 
    */ 
    public class SectionsPagerAdapter extends FragmentPagerAdapter { 
     Context mContext; 

     public SectionsPagerAdapter(android.support.v4.app.FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public android.support.v4.app.Fragment getItem(int position) { 
      // getItem is called to instantiate the fragment for the given page. 
      // Return a DummySectionFragment (defined as a static inner class 
      // below) with the page number as its lone argument. 
      switch(position) { 
      case 0: 
       return new Tab1(); 
      case 1: 
       return new Tab2(mContext); 
      case 2: 
       return new Tab3(mContext); 
      case 3: 
       return new Tab4(mContext); 
      case 4: 
       return new Tab5(mContext); 
      } 
      return null; 
     } 

     @Override 
     public int getCount() { 
      // Show 3 total pages. 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
      case 0: 
       return getString(R.string.title_section1).toUpperCase(l); 
      case 1: 
       return getString(R.string.title_section2).toUpperCase(l); 
      case 2: 
       return getString(R.string.title_section3).toUpperCase(l); 
      case 3: 
       return getString(R.string.title_section4).toUpperCase(l); 
      case 4: 
       return getString(R.string.title_section5).toUpperCase(l); 
      } 
      return null; 
     } 
    } 




    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // toggle nav drawer on selecting action bar app icon/title 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     // Handle action bar actions click 
     switch (item.getItemId()) { 
     case R.id.action_settings: 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    /* * 
    * Called when invalidateOptionsMenu() is triggered 
    */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // if nav drawer is opened, hide the action items 
     boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 
     menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    /** 
    * Diplaying fragment view for selected nav drawer list item 
    * */ 
    private void displayView(int position) { 
     // update the main content by replacing fragments 
     Fragment fragment = null; 
     switch (position) { 
     case 0: 
      fragment = new HomeFragment(); 
      break; 
     case 1: 
      fragment = new FindPeopleFragment(); 
      break; 
     case 2: 
      fragment = new PhotosFragment(); 
      break; 
     case 3: 
      fragment = new CommunityFragment(); 
      break; 
     case 4: 
      fragment = new PagesFragment(); 
      break; 
     case 5: 
      fragment = new WhatsHotFragment(); 
      break; 

     default: 
      break; 
     } 

     if (fragment != null) { 
      FragmentManager fragmentManager = getFragmentManager(); 
      fragmentManager.beginTransaction() 
        .replace(R.id.frame_container, fragment).commit(); 

      // update selected item and title, then close the drawer 
      mDrawerList.setItemChecked(position, true); 
      mDrawerList.setSelection(position); 
      setTitle(navMenuTitles[position]); 
      mDrawerLayout.closeDrawer(mDrawerList); 
     } else { 
      // error in creating fragment 
      Log.e("MainActivity", "Error in creating fragment"); 
     } 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getActionBar().setTitle(mTitle); 
    } 

    /** 
    * When using the ActionBarDrawerToggle, you must call it during 
    * onPostCreate() and onConfigurationChanged()... 
    */ 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggls 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 

} 

FindPeopleFragment.java

public class FindPeopleFragment extends Fragment { 

    public FindPeopleFragment(){} 

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

     View rootView = inflater.inflate(R.layout.fragment_find_people, container, false); 



     return rootView; 
    } 

} 

回答