当包含地图到布局应用程序崩溃时

时间:2014-08-06 05:11:21

标签: android google-maps

我有一个应该有谷歌地图的布局。但是,当我尝试包含地图时,应用程序崩溃了。没有地图,它工作正常。

这是我的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


<fragment 
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />  



    <TextView
        android:id="@+id/filmhall_contactus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cinema_filmhall_contactus"
        android:textColor="#000000"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/filmhall_address"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cinema_filmhall_address"
        android:textColor="#000000"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/filmhall_telephone1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cinema_filmhall_tp1"
        android:textColor="#000000"
        android:textStyle="bold" />

       <TextView
        android:id="@+id/filmhall_telephone2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cinema_filmhall_tp2"
        android:textColor="#000000"
        android:textStyle="bold" />

       <TextView
        android:id="@+id/filmhall_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cinema_filmhall_email"
        android:textColor="#000000"
        android:textStyle="bold" />

       <TextView
        android:id="@+id/filmhall_facilities"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/cinema_filmhall_facility"
        android:textColor="#000000"
        android:textStyle="bold" />






</LinearLayout>

当我删除地图的xml代码时,它正在工作。另外不是

我的logcat

08-06 10:43:12.655: E/AndroidRuntime(28210): FATAL EXCEPTION: main
08-06 10:43:12.655: E/AndroidRuntime(28210): android.view.InflateException: Binary XML file line #8: Error inflating class fragment
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at com.fortuna.cinemalk.TheaterDetailFragment.onCreateView(TheaterDetailFragment.java:24)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.os.Handler.handleCallback(Handler.java:725)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.os.Looper.loop(Looper.java:137)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.app.ActivityThread.main(ActivityThread.java:5279)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at java.lang.reflect.Method.invokeNative(Native Method)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at java.lang.reflect.Method.invoke(Method.java:511)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at dalvik.system.NativeStart.main(Native Method)
08-06 10:43:12.655: E/AndroidRuntime(28210): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.Fragment.instantiate(Fragment.java:369)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272)
08-06 10:43:12.655: E/AndroidRuntime(28210):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:682)
08-06 10:43:12.655: E/AndroidRuntime(28210):    ... 19 more
08-06 10:43:12.986: E/android.os.Debug(2381): !@Dumpstate > sdumpstate -k -t -z -d -o /data/log/dumpstate_app_error
08-06 10:43:21.535: E/ViewRootImpl(2381): sendUserActionEvent() mView == null
08-06 10:43:21.575: E/InputDispatcher(2381): channel ~ Channel is unrecoverably broken and will be disposed!
08-06 10:43:22.196: E/EnterpriseContainerManager(2381): ContainerPolicy Service is not yet ready!!!
08-06 10:43:32.935: E/Watchdog(2381): !@Sync 1245

地图类

package com.fortuna.cinemalk;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Map extends Activity {

    // Google Map
    private GoogleMap googleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);

        try {
            // Loading map
            initilizeMap();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * function to load map. If map is not created it will create it for you
     * */
    private void initilizeMap() {
        if (googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }

}

2 个答案:

答案 0 :(得分:2)

<强>问题:

com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment

当您尝试使用{MapFragment时,您无法将Fragment投射到原始机器人的ClassCastException,这将导致MapFragment转而使用android:id="@+id/map"投射GoogleMap map = ((MapFragment) getFragmentManager() .findFragmentById(R.id.map)).getMap(); 1}}

MapFragment

编辑:

<fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" /> GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 是旧版本的地图我建议将SupportMapFragment用于更新版本。

{{1}}

答案 1 :(得分:0)

尝试将以下权限添加到Manifest.xml文件中。

<permission
        android:name="com.fortuna.cinemalk.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

之前

<uses-sdk
        android:minSdkVersion=".."
        android:targetSdkVersion=".." />

希望这可以帮到你!