0
votes

When trying to set up Google Maps v2, I keep getting

Unable to resolve superclass of Lcom/alpha/dealtap/Map; (40)

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.alpha.dealtap/com.alpha.dealtap.Map}: java.lang.ClassNotFoundException: com.alpha.dealtap.Map in loaderdalvik. loaderdalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.alpha.dealtap-1.apk

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.alpha.dealtap"
android:versionCode="1"
android:versionName="1.0" >

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

<permission
    android:name="com.alpha.dealtap.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="dealtap.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/> -->


<!-- This might be the problem......The Google code produces an error -->
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<application
    android:allowBackup="true"
    android:icon="@drawable/dealtap_text"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <uses-library android:name="com.google.android.maps" />

    <activity
        android:name="com.alpha.dealtap.Main"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.alpha.dealtap.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.alpha.dealtap.Search_Page"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.alpha.dealtap.SEARCH_PAGE" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.alpha.dealtap.DealPage"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.alpha.dealtap.DEALPAGE" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.alpha.dealtap.StorePage"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.alpha.dealtap.STOREPAGE" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.alpha.dealtap.Map"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.alpha.dealtap.MAP" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.alpha.dealtap.TapDeal"
        android:label="TapDeal"
        android:windowSoftInputMode="stateHidden" >
        <intent-filter>
            <action android:name="com.alpha.dealtap.TAPDEAL" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="Took it out for privacy" />
</application>

</manifest>

Map.Java

package com.alpha.dealtap;

import com.alpha.dealtap.R;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class Map extends FragmentActivity {

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

}
}

Map.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white" >

<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>

I've followed the Google dev process and a couple of tutorials but haven't found the answer

Thanks!

New LogCat

06-09 14:11:30.552: E/AndroidRuntime(11833): FATAL EXCEPTION: main 06-09 14:11:30.552: E/AndroidRuntime(11833): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alpha.dealtap/com.alpha.dealtap.Map}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.ActivityThread.access$1500(ActivityThread.java:124) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.os.Handler.dispatchMessage(Handler.java:99) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.os.Looper.loop(Looper.java:130) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.ActivityThread.main(ActivityThread.java:3806) 06-09 14:11:30.552: E/AndroidRuntime(11833): at java.lang.reflect.Method.invokeNative(Native Method) 06-09 14:11:30.552: E/AndroidRuntime(11833): at java.lang.reflect.Method.invoke(Method.java:507) 06-09 14:11:30.552: E/AndroidRuntime(11833): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 06-09 14:11:30.552: E/AndroidRuntime(11833): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 06-09 14:11:30.552: E/AndroidRuntime(11833): at dalvik.system.NativeStart.main(Native Method) 06-09 14:11:30.552: E/AndroidRuntime(11833): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:587) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 06-09 14:11:30.552: E/AndroidRuntime(11833): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.Activity.setContentView(Activity.java:1703) 06-09 14:11:30.552: E/AndroidRuntime(11833): at com.alpha.dealtap.Map.onCreate(Map.java:13) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660) 06-09 14:11:30.552: E/AndroidRuntime(11833): ... 11 more 06-09 14:11:30.552: E/AndroidRuntime(11833): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment: make sure class name exists, is public, and has an empty constructor that is public 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.support.v4.app.Fragment.instantiate(Fragment.java:401) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.support.v4.app.Fragment.instantiate(Fragment.java:369) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 06-09 14:11:30.552: E/AndroidRuntime(11833): ... 20 more 06-09 14:11:30.552: E/AndroidRuntime(11833): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.SupportMapFragment in loader dalvik.system.PathClassLoader[/data/app/com.alpha.dealtap-2.apk] 06-09 14:11:30.552: E/AndroidRuntime(11833): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 06-09 14:11:30.552: E/AndroidRuntime(11833): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 06-09 14:11:30.552: E/AndroidRuntime(11833): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 06-09 14:11:30.552: E/AndroidRuntime(11833): at android.support.v4.app.Fragment.instantiate(Fragment.java:391)

2

2 Answers

2
votes

Step #1: Get rid of <uses-library android:name="com.google.android.maps" />, as that is not used by Maps V2.

Step #2: If you are on the R22 (or higher) version of the ADT plugin for Eclipse, be sure to fix your build path.

If those do not help, make sure that you have properly attached the Play Services Android library project to your project. For example, if you manually modified your build path (beyond what Step #2 calls for), that wasn't the right way to attach the Play Services Android library project.

0
votes

Add in your fragment attribute android:name="com.google.android.gms.maps.SupportMapFragment" Add full package name in your Manifest in this permission(missing com.): "

<uses-permission android:name="dealtap.permission.MAPS_RECEIVE /> 

Add google-play-services.jar from extras to your libs, regardless of added library project you already have.

And most important, add in your Activity:

GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
            .getMap();