谷歌地图API V2定制MapFragment + SimpleFragment [英] Google Maps API v2 Custom MapFragment + SimpleFragment
问题描述
我需要创建一个简单的应用程序包含
1.自MapFragment能够显示当前的位置(LocationListener的?),两个标记等
2.简单的空片段。
I need to create a simple application which contain 1. Custom MapFragment which can display current location (LocationListener?), two markers, etc. 2. Simple empty Fragments.
应用程序不能使用支持V4(SDK 11+)/ FragmentActivity。
The application must not use support v4 (sdk 11+) / FragmentActivity.
空片段。
XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black" >
</RelativeLayout>
类:
public class FirstFragment extends Fragment{
public FirstFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.first_fragment, container, false);
return view;
}
}
地图片段(尽量做到单)。
Map fragment (try to make it singleton).
XML:
<?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.MapFragment"/>
类
public class ThirdMapFragment extends MapFragment {
public static MapFragment instance;
@Override
public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) {
View view;
view = arg0.inflate(R.layout.map_fragment, arg1, false);
return view;
}
public static MapFragment getInstance() {
if (instance == null) {
instance = newInstance();
}
// NullPointerException in getMap() ???
// instance.getMap().addMarker(new MarkerOptions().position(new LatLng(41.1, 39)));
return instance;
}
@Override
public void onCreate(Bundle arg0) {
super.onCreate(arg0);
}
}
主要活动:
public class ActivityMain extends Activity implements OnClickListener {
FragmentManager fragmentManager;
FragmentTransaction transaction;
FirstFragment firstFragment;
MapFragment mapFragment;
// Buttons
Button b4;
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fragmentManager = getFragmentManager();
transaction = fragmentManager.beginTransaction();
b4 = (Button) findViewById(R.id.button4);
b1.setOnClickListener(this);
firstFragment = new FirstFragment();
mapFragment = ThirdMapFragment.getInstance();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onClick(View v) {
makeTransaction(v.getId());
}
private void makeTransaction(int id) {
i++;
transaction = fragmentManager.beginTransaction();
if (i == 1) {
transaction.replace(R.id.relativeLayout, firstFragment).commit();
} else if (i == 2) {
transaction.replace(R.id.relativeLayout, secondFragment).commit();
} else {
transaction.replace(R.id.relativeLayout, mapFragment).commit();
i = 0;
}
}
}
R.id.relativeLayout - 布局main.xml中
R.id.relativeLayout - Layout in main.xml
但我不看地图(空屏,变焦按钮),以及如何使LocationListener的? THX。
But I do not see the map (empty screen with zoom buttons) and how to make LocationListener? Thx.
推荐答案
不创建视图但,这就是为什么的GetMap()返回null,地图不存在,把你的code在onResume
the view is not created yet that's why getMap() returns null, map doesn't exist, put your code in onResume
这篇关于谷歌地图API V2定制MapFragment + SimpleFragment的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!