11

我在这里发现了一些关于这个主题的问题,但他们的答案似乎并不适用,因为我的项目正在引用包含该类的库。这是我的代码:

 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"));


    }
}

所以你可以看到我在导入中引用了 Fragment 库,Eclipse 没有抛出任何错误,所以它似乎承认它存在。在下图中,您可以看到我的 Eclipse 项目显示了引用的库。在其中您可以看到带有 findFragmentById() 的 FragmentManager 类。我还以类似的方式找到了我引用的其他类。所以总而言之,我在 lib 文件夹中有库,它们被 eclipse 确认并且在代码中没有抛出任何错误,但是由于错误,包不会导出,唯一的错误是在 " p" 在包中指出:'类型 android.app.Fragment 无法解析。它是从所需的 .class 文件中间接引用的

引用的库

有任何想法吗?

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

4

2 回答 2

27

尝试改变

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

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

您必须运行 ICS 之前的 Android 版本,并且您正在使用“MapFragment”,它使用 Fragments 的内置版本而不是支持库版本。

于 2012-12-26T23:36:13.077 回答
3

确保您的目标 SDK 是 3.0 或更高版本。

在Eclipse中,点击Project菜单,点击Properties,点击左侧Android,选择3.0以上的目标SDK。

于 2013-02-05T22:13:03.783 回答