I am Using View Pager to Display three Views.
\"Filter\",\"Streets\",\"Around\"
Each View is Defined by Fragment.
WHAT I WA
To use Google Maps, you have to extend MapActivity, which you didn't do. Check out this example in the docs. In the spirit of maintainability, I wouldn't resort to solutions that use deprecated functionality.
A more solid solution is to extend MapActivity and copy the missing implementation from FragmentActivity. If you don't want or need backwards compatiblity with older Android versions, just use MapActivity rather than FragmentActivity, which should already include the functionality needed to show Fragments in Android 3.0 and later.
Edit: here's a project that did it for you.
You can use LocalActivityManager to host a Activity inside a fragment. It is a deprecated class, but it offers the simplest solution.
Here is the code for a fragment (MyFilterFragment in your code). YourMapActivity is a basic activity that extends MapActivity.
public class MapFragment extends Fragment {
private static final String KEY_STATE_BUNDLE = "localActivityManagerState";
private LocalActivityManager mLocalActivityManager;
protected LocalActivityManager getLocalActivityManager() {
return mLocalActivityManager;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle state = null;
if (savedInstanceState != null) {
state = savedInstanceState.getBundle(KEY_STATE_BUNDLE);
}
mLocalActivityManager = new LocalActivityManager(getActivity(), true);
mLocalActivityManager.dispatchCreate(state);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//This is where you specify you activity class
Intent i = new Intent(getActivity(), YourMapActivity.class);
Window w = mLocalActivityManager.startActivity("tag", i);
View currentView=w.getDecorView();
currentView.setVisibility(View.VISIBLE);
currentView.setFocusableInTouchMode(true);
((ViewGroup) currentView).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
return currentView;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBundle(KEY_STATE_BUNDLE,
mLocalActivityManager.saveInstanceState());
}
@Override
public void onResume() {
super.onResume();
mLocalActivityManager.dispatchResume();
}
@Override
public void onPause() {
super.onPause();
mLocalActivityManager.dispatchPause(getActivity().isFinishing());
}
@Override
public void onStop() {
super.onStop();
mLocalActivityManager.dispatchStop();
}
@Override
public void onDestroy() {
super.onDestroy();
mLocalActivityManager.dispatchDestroy(getActivity().isFinishing());
}
}
Edit: Since this answer was posted, Google has released Google Maps Android API with fragment support with an official MapFragment class.