2015-04-21 22 views
0

我試圖從活動加載地圖片段。對於活動片段不被充氣

代碼:

package com.example.project; 

import android.app.ListActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Adapter; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.Toast; 

public class VehicleListActivity extends ListActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list_viewer); 

     ListView list = getListView(); 
     ListAdapter adapter = new ListAdapter(getApplicationContext()); 

     list.setAdapter(adapter); 
     list.setItemsCanFocus(true); 

     list.setOnItemClickListener 
     (
       new OnItemClickListener() 
       { 

        @Override 
        public void onItemClick(AdapterView<?> arg0, View arg1, 
          int arg2, long arg3) { 
         // TODO Auto-generated method stub 
         Toast.makeText(getApplicationContext(), "you hav clicked", Toast.LENGTH_LONG).show(); 

         Adapter adapter = arg0.getAdapter(); 
         String vehicleNumber = ((VehicleDetails) adapter.getItem(arg2)).getVehicleNumber(); 
         double latitude = ((VehicleDetails) adapter.getItem(arg2)).getLatitude(); 
         double longitude = ((VehicleDetails) adapter.getItem(arg2)).getLongitude(); 

         Bundle data = new Bundle(); 
         data.putString("VEHICLE_No", vehicleNumber); 
         data.putDouble("LATITUDE", latitude); 
         data.putDouble("LONGITUDE", longitude); 

         MapLoaderFragment map = new MapLoaderFragment(); 
         map.setArguments(data); 

        } 

       } 
     ); 
    } 

} 

代碼片段類:

package com.example.project; 
 

 
import com.google.android.gms.common.GooglePlayServicesNotAvailableException; 
 
import com.google.android.gms.maps.CameraUpdateFactory; 
 
import com.google.android.gms.maps.GoogleMap; 
 
import com.google.android.gms.maps.MapView; 
 
import com.google.android.gms.maps.MapsInitializer; 
 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
 
import com.google.android.gms.maps.model.CameraPosition; 
 
import com.google.android.gms.maps.model.LatLng; 
 
import com.google.android.gms.maps.model.Marker; 
 
import com.google.android.gms.maps.model.MarkerOptions; 
 

 
import android.os.Bundle; 
 
import android.support.v4.app.Fragment; 
 
import android.view.LayoutInflater; 
 
import android.view.View; 
 
import android.view.ViewGroup; 
 

 
public class MapLoaderFragment extends Fragment { 
 
\t 
 
\t MapView mapView; 
 
\t GoogleMap map; 
 
\t 
 
\t public MapLoaderFragment() 
 
\t { 
 
\t } 
 
\t 
 
\t @Override 
 
\t public void onCreate(Bundle savedInstanceState) 
 
\t { 
 
\t \t super.onCreate(savedInstanceState); 
 
\t } 
 

 
\t @Override 
 
\t public View onCreateView(LayoutInflater inflater, ViewGroup container, 
 
\t \t \t Bundle savedInstanceState) { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t 
 
\t \t String vehicleNumber = getArguments().getString("VEHICLE_NO"); 
 
\t \t double latitude = getArguments().getDouble("LATITUDE"); 
 
\t \t double longitude = getArguments().getDouble("LONGITUDE"); 
 
\t \t 
 
\t \t View view = inflater.inflate(R.layout.map_fragment, container, false); 
 
\t \t 
 
\t \t mapView = (MapView) view.findViewById(R.id.map); 
 
\t \t mapView.onCreate(savedInstanceState); 
 
\t \t 
 
\t \t map = mapView.getMap(); 
 
\t \t 
 
\t \t try { 
 
\t \t \t MapsInitializer.initialize(this.getActivity()); 
 
\t \t } catch (GooglePlayServicesNotAvailableException e) { 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t \t 
 
\t \t LatLng position = new LatLng(latitude, longitude); 
 
\t \t Marker marker = map.addMarker(new MarkerOptions()); 
 
\t \t marker.setTitle(vehicleNumber); 
 
\t \t marker.setPosition(position); 
 
\t \t marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.car)); 
 
\t \t 
 
\t \t CameraPosition cameraPosition = new CameraPosition.Builder().target(
 
\t \t \t \t position).zoom(15).build(); 
 
\t \t map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
 
\t \t 
 
\t \t return view; 
 
\t } 
 

 
\t @Override 
 
\t public void onDestroy() { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t mapView.onDestroy(); 
 
\t \t super.onDestroy(); 
 
\t } 
 

 
\t @Override 
 
\t public void onResume() { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t mapView.onResume(); 
 
\t \t super.onResume(); 
 
\t } 
 

 
}

這是我到目前爲止已經完成。在主要活動我加載列表中,添加點擊監聽器列表。從點擊我試圖通過發送經緯度和車輛號碼加載地圖。

代碼MainActivity.xml:

<?xml version="1.0" encoding="utf-8"?> 
 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:id="@android:id/list" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" />

代碼片段地圖:

<?xml version="1.0" encoding="utf-8"?>  
 
<fragment 
 
    xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:id="@+id/map" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    class="com.google.android.gms.maps.SupportMapFragment" />

+0

在您更換或插入你的'MapLoaderFragment'? –

+0

我的代碼背後的主要思想是如果我點擊MainActivity中的任何列表項,然後地圖應該加載與puString()方法一起發送的位置。我做錯了,請讓我知道。 – Prashanth

回答

1

你是不是PLAC你的MapLoaderFragment到任何碎片容器。通常你會在你的XML佈局文件的容器,將持有的片段,然後在調用活動,您將有

MapLoaderFragment map = new MapLoaderFragment(); 
map.setArguments(data); 
... 
FragmentManager fm = getFragmentManager(); 
fm.beginTransaction() 
.add(container, map) 
.commit(); 
2

主要有2種方式使用片段到一個活動。

靜態:在活動的佈局文件中聲明片段。

或者

動態:編程的片段添加到現有的。

在你的代碼似乎你沒有以編程方式插入片段,那麼你的問題將在你的XML佈局。

基本例子在這裏:http://developer.android.com/guide/components/fragments.html