Используйте ActionBarSherlock с API карты Google V2

Я хочу использовать ActionBarSherlock с API карты Google V2. Здесь я прочитал решение. Но когда расширяется мой основной класс ActionBarSherlock, он пропускает так много lib для menthod (например: findViewById, getSupportActionBar ..)

Это мой ActionBarSherlock

public class FeatureToggles extends SherlockMapFragment { private static final Random RANDOM = new Random(); private int items = 0; @Override public boolean onCreateOptionsMenu(Menu menu){ for(int i = 0; i < items; i++) { menu.add("Text").setIcon(R.drawable.ic_title_share_default).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); } return super.onCreateOptionsMenu(menu); } @Override public void onCreate(Bundle savedInstanceState){ setTheme(R.style.Theme_Sherlock); // Used for theme switching in samples requestWindowFeature(Window.FEATURE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); setContentView(R.layout.feature_toggles); setSupportProgressBarIndeterminateVisibility(false); setSupportProgressBarVisibility(false); getSupportActionBar().setCustomView(R.layout.custom_view); getSupportActionBar().setDisplayShowCustomEnabled(false); Context context = getSupportActionBar().getThemedContext(); ArrayAdapter<CharSequence> listAdapter = ArrayAdapter.createFromResource(context, R.array.locations, R.layout.sherlock_spinner_item); listAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); getSupportActionBar().setListNavigationCallbacks(listAdapter, null); // if (savedInstanceState == null) { // // Do first time initialization -- add initial fragment. // Fragment newFragment = CountingFragment.newInstance(mStackLevel); // FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); // ft.add(R.id.simple_fragment, newFragment).commit(); // } else { // mStackLevel = savedInstanceState.getInt("level"); // } // // findViewById(R.id.new_fragment).setOnClickListener(new View.OnClickListener() { // public void onClick(View v){ // addFragmentToStack(); // } // }); findViewById(R.id.btnMap).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ Intent i = new Intent(getApplicationContext(), GoogleActivityV2.class); startActivity(i); } }); findViewById(R.id.display_progress_show).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ setSupportProgressBarVisibility(true); setSupportProgressBarIndeterminateVisibility(false); setSupportProgress(RANDOM.nextInt(8000) + 10); } }); findViewById(R.id.display_progress_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ setSupportProgressBarVisibility(false); } }); findViewById(R.id.display_iprogress_show).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ // Hack to hide the regular progress bar setSupportProgress(Window.PROGRESS_END); setSupportProgressBarIndeterminateVisibility(true); } }); findViewById(R.id.display_iprogress_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ setSupportProgressBarIndeterminateVisibility(false); } }); findViewById(R.id.display_items_clear).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ items = 0; invalidateOptionsMenu(); } }); findViewById(R.id.display_items_add).setOnClickListener(new View.OnClickListener() { public void onClick(View v){ items += 1; invalidateOptionsMenu(); } }); findViewById(R.id.display_subtitle_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setSubtitle("The quick brown fox jumps over the lazy dog."); } }); findViewById(R.id.display_subtitle_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setSubtitle(null); } }); findViewById(R.id.display_title_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayShowTitleEnabled(true); } }); findViewById(R.id.display_title_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayShowTitleEnabled(false); } }); findViewById(R.id.display_custom_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayShowCustomEnabled(true); } }); findViewById(R.id.display_custom_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayShowCustomEnabled(false); } }); findViewById(R.id.navigation_standard).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); } }); findViewById(R.id.navigation_list).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); } }); findViewById(R.id.navigation_tabs).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); } }); findViewById(R.id.display_home_as_up_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayHomeAsUpEnabled(true); } }); findViewById(R.id.display_home_as_up_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayHomeAsUpEnabled(false); } }); findViewById(R.id.display_logo_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayUseLogoEnabled(true); } }); findViewById(R.id.display_logo_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayUseLogoEnabled(false); } }); findViewById(R.id.display_home_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayShowHomeEnabled(true); } }); findViewById(R.id.display_home_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().setDisplayShowHomeEnabled(false); } }); findViewById(R.id.display_actionbar_show).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().show(); } }); findViewById(R.id.display_actionbar_hide).setOnClickListener(new View.OnClickListener() { public void onClick(View view){ getSupportActionBar().hide(); } }); } public void onTabSelected(Tab tab, FragmentTransaction transaction){ } public void onTabUnselected(Tab tab, FragmentTransaction transaction){ } public void onTabReselected(Tab tab, FragmentTransaction transaction){ } } 

Вот мой подход с полной экранной картой (обратите внимание, что использование GoogleMap API V2 внутри фрагмента на вкладке «АБС» добавит несколько лишних черных полей при прокрутке, и это проблема API, поэтому …):

Макет для фрагмента карты:

 <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.package.TransparentSupportMapFragment" /> 

Класс для карты (что может быть полезно для некоторых вещей, таких как исправление ошибок API ..)

 public class TransparentSupportMapFragment extends SupportMapFragment { public TransparentSupportMapFragment() { super(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup view, Bundle savedInstance) { View layout = super.onCreateView(inflater, view, savedInstance); FrameLayout frameLayout = new FrameLayout(getActivity()); frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent)); ((ViewGroup) layout).addView(frameLayout, new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); return layout; } } 

A FragmentActivity (или SherlockFragmentActivity)

 public class ActivityGoogleMap extends SherlockFragmentActivity{ GoogleMap _googleMap; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // abs ActionBar bar = getSupportActionBar(); bar.setTitle(R.string.tle_abs); bar.setDisplayHomeAsUpEnabled(true); // map _googleMap = ((TransparentSupportMapFragment) getSupportFragmentManager().findFragmentById((R.id.map))).getMap(); } 

Простой переход без анимации:

 Intent intent = new Intent(this, ActivityGoogleMap.class); startActivity(intent); 

Теперь для работы манифеста:

OpenGLES2:

  <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 

Некоторые разрешения:

  <permission android:name="com.egdigital.appetablissement.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- GPS LOCATION --> <uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

Ваш ключ API в приложении:

 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="HERE_THE_KEY" /> 

Ваша карта:

 <activity android:name=".ActivityGoogleMap" android:configChanges="orientation" android:label="@string/app_name" > </activity> 

Надеюсь, это поможет удачи