Android的渲染谷歌地图一个片段内 [英] Android Render Google Map inside a Fragment
问题描述
如上图所示,我有一个片段活动而呈现两个fragements。在地图碎片,我想implment和显示地图。
由于我们需要扩大MapActivity我不知道它如何能在片段中完成。
想实现从解决方案 (<一href="http://stackoverflow.com/a/10739200/1737771">http://stackoverflow.com/a/10739200/1737771)
包com.m7.nomad;
进口android.app.LocalActivityManager;
进口android.content.Intent;
进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口com.actionbarsherlock.app.SherlockFragment;
进口com.actionbarsherlock.view.Window;
公共类MapsFragment扩展SherlockFragment {
私有静态最后弦乐KEY_STATE_BUNDLE =localActivityManagerState;
私人LocalActivityManager mLocalActivityManager;
保护LocalActivityManager getLocalActivityManager(){
返回mLocalActivityManager;
}
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
束状态= NULL;
如果(savedInstanceState!= NULL){
状态= savedInstanceState.getBundle(KEY_STATE_BUNDLE);
}
mLocalActivityManager =新LocalActivityManager(getActivity(),TRUE);
mLocalActivityManager.dispatchCreate(州);
}
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
捆绑savedInstanceState){
//这是你指定活动类
意图I =新的意图(getActivity(),GMapActivity.class);
窗口W = mLocalActivityManager.startActivity(标签,我);
查看currentView = w.getDecorView();
currentView.setVisibility(View.VISIBLE);
currentView.setFocusableInTouchMode(真正的);
((ViewGroup中)currentView)
.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
返回currentView;
}
@覆盖
公共无效的onSaveInstanceState(包outState){
super.onSaveInstanceState(outState);
outState.putBundle(KEY_STATE_BUNDLE,
mLocalActivityManager.saveInstanceState());
}
@覆盖
公共无效onResume(){
super.onResume();
mLocalActivityManager.dispatchResume();
}
@覆盖
公共无效的onPause(){
super.onPause();
mLocalActivityManager.dispatchPause(getActivity()isFinishing());
}
@覆盖
公共无效的onStop(){
super.onStop();
mLocalActivityManager.dispatchStop();
}
@覆盖
公共无效的onDestroy(){
super.onDestroy();
mLocalActivityManager.dispatchDestroy(getActivity()isFinishing());
}
}
我应该怎么指定靠近
..............
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
捆绑savedInstanceState){
//这是你指定活动类
意图I =新的意图(getActivity(),GMapActivity.class);
窗口W = mLocalActivityManager.startActivity(标签,我);
..................
看看新谷歌地图Android的API这是刚刚发布的V2 。它包含片段(包括支持库)的支持以及更多。
As shown above i have a Fragment Activity which renders two fragements. On the Map Fragment i want to implment and display a Map.
Since we need to extend MapActivity i am not sure how it can be done inside a fragment.
Trying to implement Solution from (http://stackoverflow.com/a/10739200/1737771)
package com.m7.nomad;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Window;
public class MapsFragment extends SherlockFragment {
private static final String KEY_STATE_BUNDLE = "localActivityManagerState";
private LocalActivityManager mLocalActivityManager;
protected LocalActivityManager getLocalActivityManager() {
return mLocalActivityManager;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle state = null;
if (savedInstanceState != null) {
state = savedInstanceState.getBundle(KEY_STATE_BUNDLE);
}
mLocalActivityManager = new LocalActivityManager(getActivity(), true);
mLocalActivityManager.dispatchCreate(state);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This is where you specify you activity class
Intent i = new Intent(getActivity(), GMapActivity.class);
Window w = mLocalActivityManager.startActivity("tag", i);
View currentView = w.getDecorView();
currentView.setVisibility(View.VISIBLE);
currentView.setFocusableInTouchMode(true);
((ViewGroup) currentView)
.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
return currentView;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBundle(KEY_STATE_BUNDLE,
mLocalActivityManager.saveInstanceState());
}
@Override
public void onResume() {
super.onResume();
mLocalActivityManager.dispatchResume();
}
@Override
public void onPause() {
super.onPause();
mLocalActivityManager.dispatchPause(getActivity().isFinishing());
}
@Override
public void onStop() {
super.onStop();
mLocalActivityManager.dispatchStop();
}
@Override
public void onDestroy() {
super.onDestroy();
mLocalActivityManager.dispatchDestroy(getActivity().isFinishing());
}
}
What should i specify for near
..............
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This is where you specify you activity class
Intent i = new Intent(getActivity(), GMapActivity.class);
Window w = mLocalActivityManager.startActivity("tag", i);
..................
Take a look at the new Google Maps Android API v2 that was just released. It contains support for fragments (including the support library) and much more.
这篇关于Android的渲染谷歌地图一个片段内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!