Reputation: 186
I've added a mapview activity to an app, attempting to open the mapView activivty causes a crash. I'm unfamiliar with this problem, and the other threads here about it tend to refer to libs, which I don't seem to have, or class path, which could be the problem but I don't really understand it.
12-12 18:01:26.075: E/AndroidRuntime(4655): FATAL EXCEPTION: main 12-12 18:01:26.075: E/AndroidRuntime(4655): java.lang.NoClassDefFoundError: com.b00517566.weekST.MyMapViewer 12-12 18:01:26.075: E/AndroidRuntime(4655): at com.b00517566.weekST.WeekSevenTwoActivity.updateWeatherView(WeekSevenTwoActivity.java:144) 12-12 18:01:26.075: E/AndroidRuntime(4655): at com.b00517566.weekST.WeekSevenTwoActivity.access$0(WeekSevenTwoActivity.java:142) 12-12 18:01:26.075: E/AndroidRuntime(4655): at com.b00517566.weekST.WeekSevenTwoActivity$1.onClick(WeekSevenTwoActivity.java:63) 12-12 18:01:26.075: E/AndroidRuntime(4655): at android.view.View.performClick(View.java:4202) 12-12 18:01:26.075: E/AndroidRuntime(4655): at android.view.View$PerformClick.run(View.java:17340) 12-12 18:01:26.075: E/AndroidRuntime(4655): at android.os.Handler.handleCallback(Handler.java:725) 12-12 18:01:26.075: E/AndroidRuntime(4655): at android.os.Handler.dispatchMessage(Handler.java:92) 12-12 18:01:26.075: E/AndroidRuntime(4655): at android.os.Looper.loop(Looper.java:137) 12-12 18:01:26.075: E/AndroidRuntime(4655): at android.app.ActivityThread.main(ActivityThread.java:5039) 12-12 18:01:26.075: E/AndroidRuntime(4655): at java.lang.reflect.Method.invokeNative(Native Method) 12-12 18:01:26.075: E/AndroidRuntime(4655): at java.lang.reflect.Method.invoke(Method.java:511) 12-12 18:01:26.075: E/AndroidRuntime(4655): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 12-12 18:01:26.075: E/AndroidRuntime(4655): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-12 18:01:26.075: E/AndroidRuntime(4655): at dalvik.system.NativeStart.main(Native Method)
public class MyMapViewer extends MapActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {//class begins
super.onCreate(savedInstanceState);
setContentView(R.layout.my_mapview);//sets the layout to the xml
MapView mapView = (MapView) findViewById(R.id.mapview);//creates a new mapview initialisation
mapView.setBuiltInZoomControls(true);//adds the zoom function to the map
List<Overlay> mapOverlays = mapView.getOverlays();//the mapOverlay listobject is initialised to teh mapView
Drawable drawable = this.getResources().getDrawable(R.drawable.station_icon);//points to marker icon
MyItemizedOverlay itemizedoverlay = new MyItemizedOverlay(drawable, this);//instantiates Itemizer
GeoPoint point = new GeoPoint((int)(54.684624 * 1e6),
(int)(-5.880218 * 1e6));//converts double cords to microdegrees for Geopoint
OverlayItem overlayitem = new OverlayItem(point, "Jordanstown", "Shore Road, Newtownabbey, Belfast, Antrim BT370QB ");
GeoPoint point1 = new GeoPoint((int)(54.66370520273512 * 1e6),
(int)(-5.930986404418945 * 1e6));//converts double cords to microdegrees for Geopoint
OverlayItem overlayitem2 = new OverlayItem(point1, "Valley JuiJitsu Club", "Valley Park Newtownabbey BT36 6");
GeoPoint point2 = new GeoPoint((int)(54.644600844283104 * 1e6),
(int)(-5.666391849517822 * 1e6));//converts double cords to microdegrees for Geopoint
OverlayItem overlayitem3 = new OverlayItem(point2, "Peninsula Martial Arts", "3 Balloo Link, Bangor, Down BT19 7HJ");
itemizedoverlay.addOverlay(overlayitem); //calls teh addOverlay method
mapOverlays.add(itemizedoverlay);//adds above to the itemizedoverlay
}//end of class
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}//a necessary generated method
}
The code looks fine to me, so the problem ought to be related to something within the editor or project properties. Any advice on how to go about fixing this would be appreciated.
Manifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.b00517566.weekST" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="9" /> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".WeekSevenTwoActivity" android:label="@string/app_name" > </activity> <activity android:name="splash"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="MyMapViewer" android:theme="@android:style/Theme.NoTitleBar"> </activity> </application> </manifest>
private void updateWeatherView() {
startActivity(new Intent(this, MyMapViewer.class));
}//end of method
As you can see its pretty simple, there are no other MyMapViewer classes
Upvotes: 0
Views: 164
Reputation: 4425
<uses-library android:name="com.google.android.maps" />
mainfest add this library
and add permission
<!--permissions -->
<uses-permission
android:name="android.permission.INTERNET">
</uses-permission>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
Upvotes: 2