Android 如何将此代码用于不在活动GMapV2Directions中的片段

Android 如何将此代码用于不在活动GMapV2Directions中的片段,android,google-maps,android-fragments,android-activity,google-maps-api-2,Android,Google Maps,Android Fragments,Android Activity,Google Maps Api 2,好的,这是我的活动代码,我在其中使用mapfragment并显示路线,但我需要在片段中执行此操作,而不是在活动中这是代码 我需要将该类扩展为片段而不是片段活动 public class NavigationActivity extends FragmentActivity { private static final LatLng AMSTERDAM = new LatLng(52.37518, 4.895439); private static final LatLng PA

好的,这是我的活动代码,我在其中使用mapfragment并显示路线,但我需要在片段中执行此操作,而不是在活动中这是代码

我需要将该类扩展为片段而不是片段活动

public class NavigationActivity extends FragmentActivity {

    private static final LatLng AMSTERDAM = new LatLng(52.37518, 4.895439);
    private static final LatLng PARIS = new LatLng(48.856132, 2.352448);
    private static final LatLng FRANKFURT = new LatLng(50.111772, 8.682632);
    private GoogleMap map;
    private SupportMapFragment fragment;
    private LatLngBounds latlngBounds;
    private Button bNavigation;
    private Polyline newPolyline;
    private boolean isTravelingToParis = false;
    private int width, height;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation);

        getSreenDimanstions();
        fragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
        map = fragment.getMap();    

        bNavigation = (Button) findViewById(R.id.bNavigation);
        bNavigation.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (!isTravelingToParis)
                {
                    isTravelingToParis = true;
                    findDirections( AMSTERDAM.latitude, AMSTERDAM.longitude,PARIS.latitude, PARIS.longitude, GMapV2Direction.MODE_DRIVING );
                }
                else
                {
                    isTravelingToParis = false;
                    findDirections( AMSTERDAM.latitude, AMSTERDAM.longitude, FRANKFURT.latitude, FRANKFURT.longitude, GMapV2Direction.MODE_DRIVING );  
                }
            }
        });
    }

    @Override
    protected void onResume() {

        super.onResume();
        latlngBounds = createLatLngBoundsObject(AMSTERDAM, PARIS);
        map.moveCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds, width, height, 150));

    }

    public void handleGetDirectionsResult(ArrayList<LatLng> directionPoints) {
        PolylineOptions rectLine = new PolylineOptions().width(5).color(Color.RED);

        for(int i = 0 ; i < directionPoints.size() ; i++) 
        {          
            rectLine.add(directionPoints.get(i));
        }
        if (newPolyline != null)
        {
            newPolyline.remove();
        }
        newPolyline = map.addPolyline(rectLine);
        if (isTravelingToParis)
        {
            latlngBounds = createLatLngBoundsObject(AMSTERDAM, PARIS);
            map.animateCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds, width, height, 150));
        }
        else
        {
            latlngBounds = createLatLngBoundsObject(AMSTERDAM, FRANKFURT);
            map.animateCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds, width, height, 150));
        }

    }

    private void getSreenDimanstions()
    {
        Display display = getWindowManager().getDefaultDisplay();
        width = display.getWidth(); 
        height = display.getHeight(); 
    }

    private LatLngBounds createLatLngBoundsObject(LatLng firstLocation, LatLng secondLocation)
    {
        if (firstLocation != null && secondLocation != null)
        {
            LatLngBounds.Builder builder = new LatLngBounds.Builder();    
            builder.include(firstLocation).include(secondLocation);

            return builder.build();
        }
        return null;
    }

    public void findDirections(double fromPositionDoubleLat, double fromPositionDoubleLong, double toPositionDoubleLat, double toPositionDoubleLong, String mode)
    {
        Map<String, String> map = new HashMap<String, String>();
        map.put(GetDirectionsAsyncTask.USER_CURRENT_LAT, String.valueOf(fromPositionDoubleLat));
        map.put(GetDirectionsAsyncTask.USER_CURRENT_LONG, String.valueOf(fromPositionDoubleLong));
        map.put(GetDirectionsAsyncTask.DESTINATION_LAT, String.valueOf(toPositionDoubleLat));
        map.put(GetDirectionsAsyncTask.DESTINATION_LONG, String.valueOf(toPositionDoubleLong));
        map.put(GetDirectionsAsyncTask.DIRECTIONS_MODE, mode);

        GetDirectionsAsyncTask asyncTask = new GetDirectionsAsyncTask(this);
        asyncTask.execute(map); 
    }
}
导航活动

public class NavigationActivity extends FragmentActivity {

    private static final LatLng AMSTERDAM = new LatLng(52.37518, 4.895439);
    private static final LatLng PARIS = new LatLng(48.856132, 2.352448);
    private static final LatLng FRANKFURT = new LatLng(50.111772, 8.682632);
    private GoogleMap map;
    private SupportMapFragment fragment;
    private LatLngBounds latlngBounds;
    private Button bNavigation;
    private Polyline newPolyline;
    private boolean isTravelingToParis = false;
    private int width, height;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation);

        getSreenDimanstions();
        fragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
        map = fragment.getMap();    

        bNavigation = (Button) findViewById(R.id.bNavigation);
        bNavigation.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (!isTravelingToParis)
                {
                    isTravelingToParis = true;
                    findDirections( AMSTERDAM.latitude, AMSTERDAM.longitude,PARIS.latitude, PARIS.longitude, GMapV2Direction.MODE_DRIVING );
                }
                else
                {
                    isTravelingToParis = false;
                    findDirections( AMSTERDAM.latitude, AMSTERDAM.longitude, FRANKFURT.latitude, FRANKFURT.longitude, GMapV2Direction.MODE_DRIVING );  
                }
            }
        });
    }

    @Override
    protected void onResume() {

        super.onResume();
        latlngBounds = createLatLngBoundsObject(AMSTERDAM, PARIS);
        map.moveCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds, width, height, 150));

    }

    public void handleGetDirectionsResult(ArrayList<LatLng> directionPoints) {
        PolylineOptions rectLine = new PolylineOptions().width(5).color(Color.RED);

        for(int i = 0 ; i < directionPoints.size() ; i++) 
        {          
            rectLine.add(directionPoints.get(i));
        }
        if (newPolyline != null)
        {
            newPolyline.remove();
        }
        newPolyline = map.addPolyline(rectLine);
        if (isTravelingToParis)
        {
            latlngBounds = createLatLngBoundsObject(AMSTERDAM, PARIS);
            map.animateCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds, width, height, 150));
        }
        else
        {
            latlngBounds = createLatLngBoundsObject(AMSTERDAM, FRANKFURT);
            map.animateCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds, width, height, 150));
        }

    }

    private void getSreenDimanstions()
    {
        Display display = getWindowManager().getDefaultDisplay();
        width = display.getWidth(); 
        height = display.getHeight(); 
    }

    private LatLngBounds createLatLngBoundsObject(LatLng firstLocation, LatLng secondLocation)
    {
        if (firstLocation != null && secondLocation != null)
        {
            LatLngBounds.Builder builder = new LatLngBounds.Builder();    
            builder.include(firstLocation).include(secondLocation);

            return builder.build();
        }
        return null;
    }

    public void findDirections(double fromPositionDoubleLat, double fromPositionDoubleLong, double toPositionDoubleLat, double toPositionDoubleLong, String mode)
    {
        Map<String, String> map = new HashMap<String, String>();
        map.put(GetDirectionsAsyncTask.USER_CURRENT_LAT, String.valueOf(fromPositionDoubleLat));
        map.put(GetDirectionsAsyncTask.USER_CURRENT_LONG, String.valueOf(fromPositionDoubleLong));
        map.put(GetDirectionsAsyncTask.DESTINATION_LAT, String.valueOf(toPositionDoubleLat));
        map.put(GetDirectionsAsyncTask.DESTINATION_LONG, String.valueOf(toPositionDoubleLong));
        map.put(GetDirectionsAsyncTask.DIRECTIONS_MODE, mode);

        GetDirectionsAsyncTask asyncTask = new GetDirectionsAsyncTask(this);
        asyncTask.execute(map); 
    }
}
公共类导航活动扩展了碎片活动{
阿姆斯特丹私人静态最终车床=新车床(52.37518,4.895439);
私人静态最终车床巴黎=新车床(48.856132,2.352448);
法兰克福私人静态最终车床=新车床(50.111772,8.682632);
私人谷歌地图;
私有支持图片段;
私人停车场停车场;
私人航空;
私有多段线新建多段线;
私有布尔值isTravelingToParis=false;
私人int宽度、高度;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u导航);
getsreendimanstations();
片段=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map));
map=fragment.getMap();
bNavigation=(按钮)findViewById(R.id.bNavigation);
bNavigation.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(!isTravelingToParis)
{
isTravelingToParis=真;
查找方向(阿姆斯特丹.纬度,阿姆斯特丹.经度,巴黎.纬度,巴黎.经度,GMapV2Direction.MODE_驾驶);
}
其他的
{
isTravelingToParis=假;
查找方向(阿姆斯特丹.纬度,阿姆斯特丹.经度,法兰克福.纬度,法兰克福.经度,GMapV2Direction.MODE_驾驶);
}
}
});
}
@凌驾
受保护的void onResume(){
super.onResume();
latlngBounds=createLatLngBoundsObject(阿姆斯特丹,巴黎);
map.moveCamera(CameraUpdateFactory.newLatLngBounds(latlngBounds,宽度,高度,150));
}
公共无效handleGetDirectionsResult(ArrayList directionPoints){
PolylineOptions rectLine=新的PolylineOptions().width(5).color(color.RED);
对于(int i=0;i
**所以我也需要改变这些课程**

public class GetDirectionsAsyncTask extends AsyncTask<Map<String, String>, Object, ArrayList<LatLng>>
{
    public static final String USER_CURRENT_LAT = "user_current_lat";
    public static final String USER_CURRENT_LONG = "user_current_long";
    public static final String DESTINATION_LAT = "destination_lat";
    public static final String DESTINATION_LONG = "destination_long";
    public static final String DIRECTIONS_MODE = "directions_mode";
    private NavigationActivity activity;
    private Exception exception;
    private ProgressDialog progressDialog;

    public GetDirectionsAsyncTask(NavigationActivity activity)
    {
        super();
        this.activity = activity;
    }

    public void onPreExecute()
    {
        progressDialog = new ProgressDialog(activity);
        progressDialog.setMessage("Calculating directions");
        progressDialog.show();
    }

    @Override
    public void onPostExecute(ArrayList result)
    {
        progressDialog.dismiss();
        if (exception == null)
        {
            activity.handleGetDirectionsResult(result);
        }
        else
        {
            processException();
        }
    }

    @Override
    protected ArrayList<LatLng> doInBackground(Map<String, String>... params)
    {
        Map<String, String> paramMap = params[0];
        try
        {
            LatLng fromPosition = new LatLng(Double.valueOf(paramMap.get(USER_CURRENT_LAT)) , Double.valueOf(paramMap.get(USER_CURRENT_LONG)));
            LatLng toPosition = new LatLng(Double.valueOf(paramMap.get(DESTINATION_LAT)) , Double.valueOf(paramMap.get(DESTINATION_LONG)));
            GMapV2Direction md = new GMapV2Direction();
            Document doc = md.getDocument(fromPosition, toPosition, paramMap.get(DIRECTIONS_MODE));
            ArrayList<LatLng> directionPoints = md.getDirection(doc);
            return directionPoints;
        }
        catch (Exception e)
        {
            exception = e;
            return null;
        }
    }

    private void processException()
    {
        Toast.makeText(activity, "Error retriving data", 3000).show();
    }
}
公共类GetDirectionAsyncTask扩展了AsyncTask
{
公共静态最终字符串USER\u CURRENT\u LAT=“USER\u CURRENT\u LAT”;
公共静态最终字符串USER\u CURRENT\u LONG=“USER\u CURRENT\u LONG”;
公共静态最终字符串DESTINATION\u LAT=“DESTINATION\u LAT”;
公共静态最终字符串DESTINATION\u LONG=“DESTINATION\u LONG”;
公共静态最终字符串方向\u MODE=“方向\u MODE”;
私人航行活动;
私人例外;
私有进程对话;
公共GetDirectionAsyncTask(导航活动活动)
{
超级();
这个。活动=活动;
}
公共无效onPreExecute()
{
progressDialog=新建progressDialog(活动);
progressDialog.setMessage(“计算方向”);
progressDialog.show();
}
@凌驾
PostExecute上的公共void(ArrayList结果)
{
progressDialog.disclose();
if(异常==null)
{
活动.handleGetDirectionsResult(结果);
}
其他的
{
processException();
}
}
@凌驾
受保护的ArrayList doInBackground(映射…参数)
{
Map paramMap=params[0];
尝试
{
LatLng fromPosition=新LatLng(Double.valueOf(paramMap.get(USER_CURRENT_LAT)),Double.valueOf(paramMap.get(USER_CURRENT_LONG));
LatLng拓扑位置=新LatLng(Double.valueOf(paramMap.get(DESTINATION_LAT)),