Fragment に、インタラクティブなマップとその下の ListView の両方を含めたいと思います。ただし、マップがフラグメントを支配しているように見えるため、両方の要素を組み込むことは困難に直面しています (ただし、私の XML コードは単に間違っている可能性があります)。
さらに、時折、次のエラーが発生します。
Caused by: java.lang.IllegalArgumentException: Binary XML file line #8: Duplicate id 0x7f04003b, tag null, or parent id 0x0 with another fragment for com.google.android.gms.maps.SupportMapFragment.
私のXMLは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="wrap_content"
class="com.google.android.gms.maps.SupportMapFragment" />
<ListView
android:id="@+id/map_frag_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
そして、私のフラグメントのコードは次のとおりです。
public class MapFrag extends SherlockFragment {
protected ListView assocListView;
protected View mapFragView;
protected String[] assocArrayItems;
protected ArrayAdapter<String> mapAdapter;
protected List assocList;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
if (mapFragView != null) {
ViewGroup parent = (ViewGroup) mapFragView.getParent();
if (parent != null)
parent.removeView(mapFragView);
}
try {
mapFragView = inflater.inflate(R.layout.maptab, null, false);
} catch (InflateException e) {
/* map is already there, just return view as it is */
}
//Creating MapFragment from SharedPreferences recently stored information
SharedPreferences tmpManager = MainActivity.getInstance().prefs;
System.out.println("now within the Map Fragment...");
String recLatitude = tmpManager.getString("recentLatitude", "default");
String recLongitude = tmpManager.getString("recentLongitude", "default");
String recWordAssoc = tmpManager.getString("wordAssociations", "default");
//Most Recent Items List
String[] theList = null;
//TODO: ERROR HERE !!!!!!!!ClassCastException NoSaveStateFrameLayout
assocListView = (ListView) mapFragView.findViewById(R.id.map_frag_view);
mapAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, theList);
assocListView.setAdapter(mapAdapter);
((BaseAdapter) assocListView.getAdapter()).notifyDataSetChanged();
if(mapFragView != null) { return mapFragView;}
((ViewGroup) assocListView.getParent()).removeView(assocListView);
container.addView(assocListView);
container.addView(mapFragView);
return container;
}
}