无法从主要活动android加载FragmentActivity

时间:2013-10-20 10:20:30

标签: android map android-activity

我想从最初的Activity调用Fragment Activity。

该应用程序包含两个类.. 而我想要做的就是当我从MainActivity中单击btn1(Button)时, 它应该显示谷歌地图V2 ..(我不想把它称为属于MainActivity的片段活动,)

  1. MainActivity.java(活动)
  2. MapView.java(FragmentActivity)
  3. 但是,它显示以下错误

    10-20 17:44:51.243: E/AndroidRuntime(1615): FATAL EXCEPTION: main
    10-20 17:44:51.243: E/AndroidRuntime(1615): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mgrs.converter.pro/com.mgrs.converter.pro.MapView}: java.lang.NullPointerException
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.os.Handler.dispatchMessage(Handler.java:99)
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.os.Looper.loop(Looper.java:137)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.ActivityThread.main(ActivityThread.java:4745)
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at java.lang.reflect.Method.invoke(Method.java:511)
    
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at dalvik.system.NativeStart.main(Native Method)
    10-20 17:44:51.243: E/AndroidRuntime(1615): Caused by: java.lang.NullPointerException
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at com.mgrs.converter.pro.MapView.onCreate(MapView.java:65)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.Activity.performCreate(Activity.java:5008)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
    10-20 17:44:51.243: E/AndroidRuntime(1615):     ... 11 more
    

    ------ MainActivity.java

    public class MainActivity extends Activity {
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            mLocMan = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
            mProvider = mLocMan.getBestProvider(new Criteria(), true);
            LocationListener mListener = new Geocoord();
    
    
    
        //Button 0
        final Button btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            ....    
        }
        }); //ends button0
    
        //Button 1
        Button btn1 = (Button)findViewById(R.id.btn1);
        btn1.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                btn.performClick();
    
    
    
                Intent intent = new Intent(MainActivity.this, MapView.class);
                startActivity(intent);
            }//ends onClick 
    
            });
    
        }//ends onCreate
    
    
    }//ends Activity
    

    ------ MapView.java

    public class MapView extends FragmentActivity {
    
        GoogleMap mGoogleMap;
        //Variables vari;
        Converter converter = new Converter();
    
    
    
        //initial values for marker
        LocationManager mLocMan;
        String mProvider;
          //current position
          double lon = converter.getLongitude();
          double lat = converter.getLatitude();
          //site#1
          double lon1 = converter.getfinalLon();
          double lat1 = converter.getfinalLat();
          //site#2
          double lon2 = converter.getinitLon();
          double lat2 = converter.getinitLat();       
    
    
    
          //google Maps LatLng() method
          LatLng position = new LatLng(lat, lon);
          LatLng position1 = new LatLng(lat1, lon1);
          LatLng position2 = new LatLng(lat2, lon2);
    
        @Override
         protected void onCreate(Bundle savedInstanceState) {
          // TODO Auto-generated method stub
          super.onCreate(savedInstanceState);
          setContentView(R.layout.mapview);          
    
          mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
          mGoogleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapview)).getMap();
    
          //add marker
          //mGoogleMap.addMarker(new MarkerOptions().position(position).title("current")).showInfoWindow();
          mGoogleMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.site1)).position(position1).title("Site#1")).showInfoWindow();
          mGoogleMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.site2)).position(position2).title("Sitee#2")).showInfoWindow();
    
          //
          mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position1, 10));
         }//ends onCreate
    }//ends MapView
    

2 个答案:

答案 0 :(得分:1)

您在初始化之前使用mGoogleMap

mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
mGoogleMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapview)).getMap();

你应该交换这些行。

答案 1 :(得分:1)

在您获得引用后调用setMapType()Source

// Get a handle to the Map Fragment
GoogleMap map = ((SupportMapFragment)getSupportFragmentManager()
            .findFragmentById(R.id.map)).getMap();
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);