2012-12-26 34 views
11

我在这里找到了关于这个主题的几个问题,但他们的答案似乎并不适用,因为我的项目引用了包含该类的库。这里是我的代码:Google maps api v2 - 类型android.app.Fragment无法解析。它是从所需的.class文件间接引用的。

package com.demo.app; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class Mapview extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     GPSTracker gps = new GPSTracker(Mapview.this); 

     // check if GPS enabled  
     if(gps.canGetLocation()){ 

      double latitude = gps.getLatitude(); 
      double longitude = gps.getLongitude(); 

      // \n is for new line 
      // Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 
     }else{ 
      // can't get location 
      // GPS or Network is not enabled 
      // Ask user to enable GPS/network in settings 
      gps.showSettingsAlert(); 
     } 

     double latitude = gps.getLatitude(); 
     double longitude = gps.getLongitude(); 


     SupportMapFragment fragment = new SupportMapFragment(); 
     getSupportFragmentManager().beginTransaction() 
       .add(android.R.id.content, fragment).commit(); 

     GoogleMap mMap; 
     mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(android.R.id.content)).getMap(); 
     mMap.addMarker(new MarkerOptions() 
       .position(new LatLng(0, 0)) 
       .title("Hello world")); 


    } 
} 

所以你可以看到,我在进口中引用的片段库时,Eclipse不引发错误,因此似乎承认它的存在。在下面的图片中,您可以看到我的eclipse项目显示了参考库。在这里你可以看到带有findFragmentById()的FragmentManager类。我还以类似的方式找到了我参考的其他课程。因此,总结我有一个lib文件夹中的库,并且它们通过eclipse进行确认,并且在代码中没有发生错误,但是由于错误,程序包不会导出,唯一的错误是在此代码的第一行旁边的“ p“在包中说明:'类型android.app.Fragment无法解析。它是间接需要的.class文件

referenced libraries

任何想法引用?

我尝试清理和重建几次路径。

回答

27

尝试改变

mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(android.R.id.content)).getMap(); 

mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(android.R.id.content)).getMap(); 

您必须运行Android的预ICS版本,并且您在使用“MapFragment”拉内置片段的版本,而不是支持库版本。

+0

这样做。总是小事。 –

3

确保您的目标SDK为3.0或以上。

在Eclipse中,单击项目菜单,单击属性,单击左侧的Android,选择3.0或更高版本的目标SDK。

相关问题