0
  • 我使用Actionbarsherlock庫,這是執行項目 抽屜操作
  • 我也確保我不混合兼容程序包,還是我我 收到此錯誤

MainActivity.java方法getSupportFragmentManager()是未定義的類型MainActivity爲Actionbarsherlock

import java.util.ArrayList; 
import android.app.FragmentManager; 
import android.content.res.Configuration; 
import android.content.res.TypedArray; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.widget.DrawerLayout; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 

import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.app.SherlockFragment; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuItem; 

public class MainActivity extends SherlockActivity { 

     private DrawerLayout mDrawerLayout; 
     private ListView mDrawerList; 
     private ActionBarDrawerToggle mDrawerToggle; 

     // nav drawer title 
     private CharSequence mDrawerTitle; 

     // used to store app title 
     private CharSequence mTitle; 

     // slide menu items 
     private String[] navMenuTitles; 
     private TypedArray navMenuIcons; 

     private ArrayList<NavDrawerItem> navDrawerItems; 
     private NavDrawerListAdapter adapter; 

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

      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(); 
       } 
      }; 
      mDrawerLayout.setDrawerListener(mDrawerToggle); 

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

     /** 
     * 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); 
      } 
     } 


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


     public boolean onOptionsItemSelected(MenuItem item) { 
      // toggle nav drawer on selecting action bar app icon/title 
      if (mDrawerToggle.onOptionsItemSelected((android.view.MenuItem) 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 
      SherlockFragment 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) { 


       android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().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); 
     } 

    } 

在行 ::

android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction().replace(R.id.frame_container, fragment).commit(); 

我得到錯誤的 ::

The method getSupportFragmentManager() is undefined for the type MainActivity 

回答

3

你應該擴大,而不是SherlockActivity

1

使用getActivity SherlockFragmentActivity( ).getSupportFragmentManager() insted getSupportFragmentManager()

這是工作。

+0

完美解決方案 – user1090751

相關問題