I have some error with MapFragment
i use HERE MAP API for Mobile. I'll try to add MapFragment in FragmentTabHost and my MapFragment Class I'm use FragmentActivity class name is "EventMap" My app is going like this:i have mainActivity is a ActionBarActivity and when i click a menu from this the app is going to FragmentTabHost. At FragmentTabHost
i have two tab frist tab is a ListFragment
for show my data and second is a EventMap.class
.Now when i run the app and go to EventMap i got the error Please see this error log:
10-12 11:48:20.681: E/AndroidRuntime(2894): FATAL EXCEPTION: main
10-12 11:48:20.681: E/AndroidRuntime(2894): Process: mpa.demo.bkklife, PID: 2894
10-12 11:48:20.681: E/AndroidRuntime(2894): java.lang.ClassCastException: mpa.demo.bkklife.EventMap cannot be cast to android.support.v4.app.Fragment
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.support.v4.app.Fragment.instantiate(Fragment.java:423)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.support.v4.app.FragmentTabHost.doTabChanged(FragmentTabHost.java:343)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.support.v4.app.FragmentTabHost.onTabChanged(FragmentTabHost.java:311)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:473)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.widget.TabHost.setCurrentTab(TabHost.java:453)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:176)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:646)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.view.View.performClick(View.java:5184)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.view.View$PerformClick.run(View.java:20910)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.os.Handler.handleCallback(Handler.java:739)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.os.Handler.dispatchMessage(Handler.java:95)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.os.Looper.loop(Looper.java:145)
10-12 11:48:20.681: E/AndroidRuntime(2894): at android.app.ActivityThread.main(ActivityThread.java:5942)
10-12 11:48:20.681: E/AndroidRuntime(2894): at java.lang.reflect.Method.invoke(Native Method)
10-12 11:48:20.681: E/AndroidRuntime(2894): at java.lang.reflect.Method.invoke(Method.java:372)
10-12 11:48:20.681: E/AndroidRuntime(2894): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
10-12 11:48:20.681: E/AndroidRuntime(2894): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Ok so see my code this is a FragmentTabHost className:EventFragment
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class EventFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public void onDestroyView() {
// TODO Auto-generated method stub
super.onDestroyView();
mTabHost = null;
}
private FragmentTabHost mTabHost;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.fragment_event);
mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("รายการแจ้งเหตุ"),
EventListView.class, null);
mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("แผนที่"),EventMap.class,null);
return mTabHost;
}
public EventFragment() {
// TODO Auto-generated constructor stub
}
}
and This is a EventMap.class:
import com.here.android.mpa.common.GeoCoordinate;
import com.here.android.mpa.common.OnEngineInitListener;
import com.here.android.mpa.mapping.Map;
import com.here.android.mpa.mapping.MapFragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class EventMap extends FragmentActivity {
// map embedded in the map fragment
private Map map = null;
// map fragment embedded in this activity
private MapFragment mapFragment = null;
public EventMap() {
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_map);
if(map == null || mapFragment == null){
init();
}
}
public void init(){
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapfragment);
mapFragment.init(new OnEngineInitListener() {
@Override
public void onEngineInitializationCompleted(OnEngineInitListener.Error error) {
if (error == OnEngineInitListener.Error.NONE) {
// retrieve a reference of the map from the map fragment
map = mapFragment.getMap();
// Set the map center coordinate to the Vancouver region (no animation)
map.setCenter(new GeoCoordinate(49.196261, -123.004773, 0.0), Map.Animation.NONE);
// Set the map zoom level to the average between min and max (no animation)
map.setZoomLevel((map.getMaxZoomLevel() + map.getMinZoomLevel()) / 2);
} else {
System.out.println("ERROR: Cannot initialize Map Fragment:"+error.toString());
}
}
});
}
}
What I'm Missing For This Error Thank.