我試圖從活動加載地圖片段。對於活動片段不被充氣
代碼:
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" />
在您更換或插入你的'MapLoaderFragment'? –
我的代碼背後的主要思想是如果我點擊MainActivity中的任何列表項,然後地圖應該加載與puString()方法一起發送的位置。我做錯了,請讓我知道。 – Prashanth