【发布时间】:2014-07-12 01:01:48
【问题描述】:
我正在为我的一个应用程序创建向导,用户必须在其中提供详细信息。当我将我的谷歌地图放入片段时会出现问题。请注意我有框架布局,我在其中放置片段,并且在那个片段中我想要有地图请帮我...
这里是我的代码:
FragmentActivity 类
public class IntroDuction_Main extends FragmentActivity
.................
..........
F_map map=new F_map();
map.setArguments(getIntent().getExtras());
Transectionfragment(map);
}
private void Transectionfragment(Fragment frag) {
FragmentManager fragmentManager;
fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setCustomAnimations(android.R.anim.fade_in,
android.R.anim.fade_out, android.R.anim.fade_in,
android.R.anim.fade_out);
transaction.replace(R.id.MainFragment, frag);
transaction.addToBackStack(null);
transaction.commit();
}
Fragment Activity 布局
<TextView
android:id="@+id/lat_lng"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:gravity="center_horizontal"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<FrameLayout
android:id="@+id/MainFragment"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="80">
</FrameLayout>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="10"
android:enabled="false"
android:text="Button" />
地图片段类
package in.high_tech.foodonclick.Introduction;
import in.high_tech.foodonclick.R;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
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;
import com.google.android.gms.maps.SupportMapFragment;
public class F_map extends Fragment {
private GoogleMap mMap;
private Bundle mBundle;
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_map, container, false);
try {
MapsInitializer.initialize(getActivity());
} catch (GooglePlayServicesNotAvailableException e) {
// TODO handle this situation
}
MapView mMapView = (MapView) view.findViewById(R.id.map);
mMapView.onCreate(mBundle);
setUpMapIfNeeded(view);
// TODO Auto-generated method stub
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBundle = savedInstanceState;
}
private void setUpMapIfNeeded(View inflatedView) {
if (mMap == null) {
mMap = ((MapView) inflatedView.findViewById(R.id.map)).getMap();
if (mMap != null) {
// setUpMap();
}
}
}
}
片段类的布局
<?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/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:mapType="normal" />
这是我的 Logcat
07-11 04:45:45.242: E/AndroidRuntime(361): FATAL EXCEPTION: main
07-11 04:45:45.242: E/AndroidRuntime(361): java.lang.ClassCastException: android.support.v4.app.NoSaveStateFrameLayout cannot be cast to com.google.android.gms.maps.MapView
07-11 04:45:45.242: E/AndroidRuntime(361): at in.high_tech.foodonclick.Introduction.F_map.onCreateView(F_map.java:31)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.os.Handler.handleCallback(Handler.java:725)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.os.Looper.loop(Looper.java:153)
07-11 04:45:45.242: E/AndroidRuntime(361): at android.app.ActivityThread.main(ActivityThread.java:5297)
07-11 04:45:45.242: E/AndroidRuntime(361): at java.lang.reflect.Method.invokeNative(Native Method)
07-11 04:45:45.242: E/AndroidRuntime(361): at java.lang.reflect.Method.invoke(Method.java:511)
07-11 04:45:45.242: E/AndroidRuntime(361): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
07-11 04:45:45.242: E/AndroidRuntime(361): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-11 04:45:45.242: E/AndroidRuntime(361): at dalvik.system.NativeStart.main(Native Method)
07-11 04:45:45.258: D/dalvikvm(361): GC_CONCURRENT freed 122K, 16% free 8728K/10308K, paused 3ms+2ms, total 21ms
【问题讨论】:
-
我做了类似的事情。您是否将不同的片段放在不同的选项卡中?
-
不,我没有标签,但是当我点击下一个按钮时,片段的视图正在改变,实际上还有 3 个片段。我每次点击下一个按钮时都会替换它
-
是,但有空点异常
标签: android android-fragments google-maps-android-api-2