Android 谷歌地图只显示缩放按钮,而不显示地图,并显示类似';GC#u表示已释放的分配';显示地图时
我想在我的应用程序中嵌入谷歌地图 但应用程序只是显示缩放按钮,我看不到地图。 当我切换到其他应用程序并切换回时。地图显示 我想知道我的应用程序有什么问题?如何解决这个问题 我就是这么做的:Android 谷歌地图只显示缩放按钮,而不显示地图,并显示类似';GC#u表示已释放的分配';显示地图时,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,我想在我的应用程序中嵌入谷歌地图 但应用程序只是显示缩放按钮,我看不到地图。 当我切换到其他应用程序并切换回时。地图显示 我想知道我的应用程序有什么问题?如何解决这个问题 我就是这么做的: public final static int HANDLER_SHOW_GOOGLEMAP = 4; public final static int HANDLER_HIDE_GOOGLEMAP = 5; private final int ENUM_GOOGLE_FRAGMENT_ADD = 0; pr
public final static int HANDLER_SHOW_GOOGLEMAP = 4;
public final static int HANDLER_HIDE_GOOGLEMAP = 5;
private final int ENUM_GOOGLE_FRAGMENT_ADD = 0;
private final int ENUM_GOOGLE_FRAGMENT_SHOW = 1;
private final int ENUM_GOOGLE_FRAGMENT_HIDE = 2;
private WeakReference<MyActivity> mActivity;
private LinearLayout m_mapLayout;
private MapFragment m_mapFragment;
public MyHandler(MyActivity activity) {
super(activity);
this.mActivity = new WeakReference<MyActivity>(activity);
// TODO Auto-generated constructor stub
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case HANDLER_SHOW_GOOGLEMAP:
showGoogleMap();
break;
case HANDLER_HIDE_GOOGLEMAP:
hideGoogleMap();
break;
}
}
private void showGoogleMap() {
initGoogleMap();
m_mapLayout.setVisibility(View.VISIBLE);
googleMapFragmentTransaction(ENUM_GOOGLE_FRAGMENT_SHOW);
MyActivity theActivity = this.mActivity.get();
FrameLayout viewGroup = (FrameLayout) theActivity.getWindow()
.getDecorView();
if (null == viewGroup.findViewById(m_mapLayout.getId())) {
viewGroup.addView(m_mapLayout);
}
}
private void hideGoogleMap() {
initGoogleMap();
m_mapLayout.setVisibility(View.INVISIBLE);
googleMapFragmentTransaction(ENUM_GOOGLE_FRAGMENT_HIDE);
MyActivity theActivity = this.mActivity.get();
FrameLayout viewGroup = (FrameLayout) theActivity.getWindow()
.getDecorView();
if (null != viewGroup.findViewById(m_mapLayout.getId())) {
viewGroup.removeView(m_mapLayout);
}
}
private void initGoogleMap() {
if (null != m_mapLayout) {
return;
}
m_mapFragment = MapFragment.newInstance();
MyActivity theActivity = this.mActivity.get();
m_mapLayout = new LinearLayout(theActivity);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 480);
m_mapLayout.setLayoutParams(lp);
m_mapLayout.setId(100011);
m_mapLayout.setY(200);
googleMapFragmentTransaction(ENUM_GOOGLE_FRAGMENT_ADD);
}
private void googleMapFragmentTransaction(int enumTransaction) {
MyActivity theActivity = this.mActivity.get();
FragmentManager fragmentManager = theActivity.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
switch (enumTransaction) {
case ENUM_GOOGLE_FRAGMENT_ADD:
fragmentTransaction.add(m_mapLayout.getId(), m_mapFragment);
break;
case ENUM_GOOGLE_FRAGMENT_SHOW:
fragmentTransaction.show(m_mapFragment);
break;
case ENUM_GOOGLE_FRAGMENT_HIDE:
fragmentTransaction.hide(m_mapFragment);
break;
default:
break;
}
fragmentTransaction.commit();
}
public final static int HANDLER\u SHOW\u GOOGLEMAP=4;
公共最终静态整数处理程序\u HIDE\u GOOGLEMAP=5;
私有最终整数枚举\谷歌\片段\添加=0;
私有最终整数枚举\谷歌\片段\显示=1;
私有final int ENUM_GOOGLE_FRAGMENT_HIDE=2;
私人弱引用活动;
私人线路布局图;
私有MapFragment m_MapFragment;
公共MyHandler(MyActivity活动){
超级(活动);
this.mActivity=新的WeakReference(活动);
//TODO自动生成的构造函数存根
}
@凌驾
公共无效handleMessage(消息消息消息){
//TODO自动生成的方法存根
超级handleMessage(msg);
开关(msg.what){
案例处理程序\u显示\u谷歌地图:
showGoogleMap();
打破
案例处理程序\u隐藏\u谷歌地图:
hidegologlemap();
打破
}
}
私有void showGoogleMap(){
initGoogleMap();
m_mapLayout.setVisibility(View.VISIBLE);
googleMapFragmentTransaction(枚举GOOGLE片段显示);
MyActivity theActivity=this.macActivity.get();
FrameLayout视图组=(FrameLayout)theActivity.getWindow()
.getDecorView();
if(null==viewGroup.findViewById(m_mapLayout.getId()){
添加视图(m_mapLayout);
}
}
私有void hidegologlemap(){
initGoogleMap();
m_mapLayout.setVisibility(视图不可见);
googleMapFragmentTransaction(枚举谷歌片段隐藏);
MyActivity theActivity=this.macActivity.get();
FrameLayout视图组=(FrameLayout)theActivity.getWindow()
.getDecorView();
if(null!=viewGroup.findViewById(m_mapLayout.getId()){
viewGroup.removeView(m_mapLayout);
}
}
私有void initGoogleMap(){
如果(空!=m_mapLayout){
返回;
}
m_mapFragment=mapFragment.newInstance();
MyActivity theActivity=this.macActivity.get();
m_mapLayout=新的线性布局(活动);
LayoutParams lp=新的LayoutParams(LayoutParams.MATCH_父项,480);
m_mapLayout.setLayoutParams(lp);
m_mapLayout.setId(100011);
m_mapLayout.setY(200);
googleMapFragmentTransaction(枚举\谷歌\片段\添加);
}
私有void googleMapFragmentTransaction(int enumTransaction){
MyActivity theActivity=this.macActivity.get();
FragmentManager FragmentManager=活动。getFragmentManager();
FragmentTransaction FragmentTransaction=fragmentManager
.beginTransaction();
交换机(枚举事务){
案例枚举\u谷歌\u片段\u添加:
fragmentTransaction.add(m_mapLayout.getId(),m_mapFragment);
打破
案例列举谷歌片段展示:
fragmentTransaction.show(m_mapFragment);
打破
案例枚举\u谷歌\u片段\u隐藏:
fragmentTransaction.hide(m_mapFragment);
打破
违约:
打破
}
fragmentTransaction.commit();
}
我没有足够的声誉上传图片,这是图片的链接:
GC部分很常见,可以通过以下方式进行过滤:^(?。*(nativeGetEnabledTags)|(GC|)).$on message(LogCat过滤器设置)@cYrixmorten:谢谢您的回答,您知道如何解决空地图的问题吗?GoogleMapOptions=new GoogleMapOptions();选项。zOrderOnTop(true);m_mapFragment=mapFragment.newInstance(选项);通过使用这些代码,我最终成功地显示了地图。