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 によって認識され、コードにエラーはスローされませんが、パッケージはエラーのためにエクスポートされず、唯一のエラーはこのコードの 1 行目の " 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();

Android の ICS より前のバージョンを実行している必要があり、サポート ライブラリ バージョンではなく組み込みバージョンのフラグメントを使用する「MapFragment」を取り込みます。

于 2012-12-26T23:36:13.077 に答える
3

ターゲット SDK が 3.0 以上であることを確認してください。

Eclipse で、[プロジェクト] メニューをクリックし、[プロパティ] をクリックして、左側の [Android] をクリックし、3.0 以上のターゲット SDK を選択します。

于 2013-02-05T22:13:03.783 に答える