android - Google Maps v2 Implementation into Existing Fragment -
i wondering if shed light on issue i'm facing.
i have app has main activity 4 buttons , fragment, whenever press button fragment changes, far good.
i stumped adding google maps v2 1 of fragments, *eg when press button 2 want load map within fragment present (fragment_place), cannot seem find way , every other question on here solutions don't seem work me.*
any appreciated, i'm not amazing programmer in first place android seems difficult myself.
i have adjusted manifest file have no idea how use existing fragment 'holder' map
main activity
package com.grim.fragments; import android.os.bundle; import android.app.activity; import android.app.fragment; import android.app.fragmentmanager; import android.app.fragmenttransaction; import android.view.view; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } public void selectfrag(view view) { fragment fr = null; if (view == findviewbyid(r.id.button1)) { fr = new fragmentone(); } else if (view == findviewbyid(r.id.button2)) { fr = new fragmentmap(); } else if (view == findviewbyid(r.id.button3)) { fr = new fragmentthree(); } else if (view == findviewbyid(r.id.button4)) { fr = new fragmentfour(); } fragmentmanager fm = getfragmentmanager(); fragmenttransaction fragmenttransaction = fm.begintransaction(); fragmenttransaction.replace(r.id.fragment_place, fr); fragmenttransaction.commit(); }
}
activity main
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/pipboyscreenpsd_nobuttons" android:orientation="vertical" > <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" > <button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="33dp" android:layout_weight="2.00" android:background="@android:color/transparent" android:onclick="selectfrag" android:text="status" android:textcolor="@android:color/holo_blue_bright" android:layout_margintop="20dp" /> </linearlayout> <fragment android:id="@+id/fragment_place" android:name="com.grim.fragments.fragmenthome" android:layout_width="664dp" android:layout_height="392dp" android:layout_marginbottom="20dp" android:layout_marginleft="150dp" android:layout_marginright="90dp" /> <space android:layout_width="match_parent" android:layout_height="wrap_content" /> <relativelayout android:id="@+id/relativelayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.24" > <imageview android:id="@+id/button4" android:layout_width="100dp" android:layout_height="80dp" android:layout_alignparenttop="true" android:onclick="selectfrag" android:layout_torightof="@+id/button3" android:src="@drawable/pipboybutton_unpressed" /> <imageview android:id="@+id/button3" android:layout_width="100dp" android:layout_height="80dp" android:layout_alignparenttop="true" android:layout_centerhorizontal="true" android:onclick="selectfrag" android:src="@drawable/pipboybutton_unpressed" /> <imageview android:id="@+id/button2" android:layout_width="100dp" android:layout_height="80dp" android:layout_alignparenttop="true" android:layout_marginleft="18dp" android:layout_toleftof="@+id/button3" android:onclick="selectfrag" android:src="@drawable/pipboybutton_unpressed" /> </relativelayout>
and example lets want button 2 map button
package com.grim.fragments; import android.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; public class fragmenttwo extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // todo auto-generated method stub return inflater.inflate(r.layout.fragment_two, container, false); } } <?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativelayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </relativelayout>
again appreciated driving me mad in don't know start, have semblance of idea of needs doing next.
edit - forgot add i've attempted
package com.grim.fragments; import android.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import com.google.android.gms.common.googleplayservicesnotavailableexception; import com.google.android.gms.maps.googlemap; import com.google.android.gms.maps.mapview; import com.google.android.gms.maps.mapsinitializer; public class fragmentmap extends fragment { private mapview mmapview; private googlemap googlemap; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflat , return layout view v = inflater.inflate(r.layout.mapview, container, false); mmapview = (mapview) v.findviewbyid(r.id.mapview); mmapview.oncreate(savedinstancestate); mmapview.onresume();//needed map display googlemap = mmapview.getmap(); //perform camera updates here return v; } @override public void onresume() { super.onresume(); mmapview.onresume(); } @override public void onpause() { super.onpause(); mmapview.onpause(); } @override public void ondestroy() { super.ondestroy(); mmapview.ondestroy(); } @override public void onlowmemory() { super.onlowmemory(); mmapview.onlowmemory(); } } <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" android:id="@+id/mapview" android:name="com.google.android.gms.maps.mapfragment" android:layout_width="match_parent" android:layout_height="match_parent" map:camerazoom="12" map:maptype="normal" map:uizoomcontrols="false" map:uirotategestures="true" map:uiscrollgestures="true" map:uizoomgestures="true" map:uitiltgestures="false" /> 03-24 22:23:22.330: e/androidruntime(31831): fatal exception: main 03-24 22:23:22.330: e/androidruntime(31831): java.lang.nullpointerexception 03-24 22:23:22.330: e/androidruntime(31831): @ maps.e.bf.b(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ eio.ontransact(sourcefile:115) 03-24 22:23:22.330: e/androidruntime(31831): @ android.os.binder.transact(binder.java:310) 03-24 22:23:22.330: e/androidruntime(31831): @ com.google.android.gms.maps.internal.imapfragmentdelegate$a$a.onresume(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ com.google.android.gms.maps.mapfragment$a.onresume(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ com.google.android.gms.dynamic.a$6.b(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ com.google.android.gms.dynamic.a.a(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ com.google.android.gms.dynamic.a.onresume(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ com.google.android.gms.maps.mapfragment.onresume(unknown source) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.fragment.performresume(fragment.java:1738) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:919) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1057) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.backstackrecord.run(backstackrecord.java:682) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1435) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.fragmentmanagerimpl$1.run(fragmentmanager.java:441) 03-24 22:23:22.330: e/androidruntime(31831): @ android.os.handler.handlecallback(handler.java:725) 03-24 22:23:22.330: e/androidruntime(31831): @ android.os.handler.dispatchmessage(handler.java:92) 03-24 22:23:22.330: e/androidruntime(31831): @ android.os.looper.loop(looper.java:137) 03-24 22:23:22.330: e/androidruntime(31831): @ android.app.activitythread.main(activitythread.java:5227) 03-24 22:23:22.330: e/androidruntime(31831): @ java.lang.reflect.method.invokenative(native method) 03-24 22:23:22.330: e/androidruntime(31831): @ java.lang.reflect.method.invoke(method.java:511) 03-24 22:23:22.330: e/androidruntime(31831): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:795) 03-24 22:23:22.330: e/androidruntime(31831): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:562) 03-24 22:23:22.330: e/androidruntime(31831): @ dalvik.system.nativestart.main(native method)
i figured out way map running within existing fragment
public class mapfragment extends fragment { mapview map; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflat , return layout view v = inflater.inflate(r.layout.map_fragment, container, false); map = (mapview) v.findviewbyid(r.id.mapview); map.oncreate(savedinstancestate); return v; } @override public void onresume() { super.onresume(); map.onresume(); } @override public void onpause() { super.onpause(); map.onpause(); } @override public void ondestroy() { super.ondestroy(); map.ondestroy(); } @override public void onlowmemory() { super.onlowmemory(); map.onlowmemory(); } }
mapview.xml
<?xml version="1.0" encoding="utf-8"?> <com.google.android.gms.maps.mapview xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/mapview" />
Comments
Post a Comment