Android cnfException - PullRequest
       5

Android cnfException

0 голосов
/ 18 января 2012

Я пытаюсь закодировать приложение, которое отображает текущую позицию устройства на карте. Когда я пытаюсь установить его на устройство, он говорит, что не может найти класс, который является моей основной деятельностью. он также говорит, что dalvikvm не может разрешить это суперкласс класса, который явно является MapActivity. Есть идеи? спасибо.

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ZoomControls;

public class WcFinderActivity extends MapActivity implements LocationListener {
    /** Called when the activity is first created. */

    EditText        txted           = null;

    Button          btnSimple       = null;

    MapView         gMapView        = null;

    MapController   mc              = null;

    Drawable        defaultMarker   = null;

    GeoPoint        p               = null;

    double          latitude        = 18.9599990845, longitude = 72.819999694;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Creating TextBox displying Lat, Long
        txted = (EditText) findViewById(R.id.id1);
        String currentLocation = "Lat: " + latitude + " Lng: " + longitude;
        txted.setText(currentLocation);

        // Creating and initializing Map
        gMapView = (MapView) findViewById(R.id.myGMap);
        p = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000));
        gMapView.setSatellite(true);
        mc = gMapView.getController();
        mc.setCenter(p);
        mc.setZoom(14);

        // Add a location mark
        MyLocationOverlay myLocationOverlay = new MyLocationOverlay();
        List<Overlay> list = gMapView.getOverlays();
        list.add(myLocationOverlay);

        // Adding zoom controls to Map
        ZoomControls zoomControls = (ZoomControls) gMapView.getZoomControls();
        zoomControls.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));

        gMapView.addView(zoomControls);
        gMapView.displayZoomControls(true);

        // Getting locationManager and reflecting changes over map if distance travel by
        // user is greater than 500m from current location.
        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this);
    }

    /* This method is called when use position will get changed */
    public void onLocationChanged(Location location) {
        if (location != null) {
            double lat = location.getLatitude();
            double lng = location.getLongitude();
            String currentLocation = "Lat: " + lat + " Lng: " + lng;
            txted.setText(currentLocation);
            p = new GeoPoint((int) lat * 1000000, (int) lng * 1000000);
            mc.animateTo(p);
        }
    }

    public void onProviderDisabled(String provider) {
        // required for interface, not used
    }

    public void onProviderEnabled(String provider) {
        // required for interface, not used
    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // required for interface, not used
    }

    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

    /* User can zoom in/out using keys provided on keypad */
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_I) {
            gMapView.getController().setZoom(gMapView.getZoomLevel() + 1);
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_O) {
            gMapView.getController().setZoom(gMapView.getZoomLevel() - 1);
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_S) {
            gMapView.setSatellite(true);
            return true;
        } else if (keyCode == KeyEvent.KEYCODE_T) {
            gMapView.setTraffic(true);
            return true;
        }
        return false;
    }

    /* Class overload draw method which actually plot a marker,text etc. on Map */
    protected class MyLocationOverlay extends com.google.android.maps.Overlay {

        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
            Paint paint = new Paint();

            super.draw(canvas, mapView, shadow);
            // Converts lat/lng-Point to OUR coordinates on the screen.
            Point myScreenCoords = new Point();
            mapView.getProjection().toPixels(p, myScreenCoords);

            paint.setStrokeWidth(1);
            paint.setARGB(255, 255, 255, 255);
            paint.setStyle(Paint.Style.STROKE);

            Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

            canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint);
            canvas.drawText("I am here...", myScreenCoords.x, myScreenCoords.y, paint);
            return true;
        }
    }
}

01-18 15: 04: 07.223: W / dalvikvm (3554): невозможно разрешить суперкласс Lcom / tecmark / WcFinderActivity; (23) 01-18 15: 04: 07.238: W / dalvikvm (3554): ссылка класса 'Lcom / tecmark / WcFinderActivity;' не удалось 01-18 15: 04: 07.238: D / AndroidRuntime (3554): выключение виртуальной машины 01-18 15: 04: 07.238: W / dalvikvm (3554): threadid = 3: поток выходит с необработанным исключением (группа = 0x4001b180) 01-18 15: 04: 07.238: E / AndroidRuntime (3554): обработчик Uncaught: выход из основного потока из-за исключения uncaught 01-18 15: 04: 07.278: E / AndroidRuntime (3554): java.lang.RuntimeException: невозможно создать экземпляр действия. ComponentInfo {com.tecmark / com.tecmark.WcFinderActivity}: java.lang.ClassNotFoundException: com.tecmark.WcFinderActivity в загрузчике dalvik.system.PathClassLoader@43e57a18 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2417) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2512) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.ActivityThread.access $ 2200 (ActivityThread.java:119) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1863) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.os.Handler.dispatchMessage (Handler.java:99) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.os.Looper.loop (Looper.java:123) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.ActivityThread.main (ActivityThread.java:4363) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на java.lang.reflect.Method.invokeNative (собственный метод) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): в java.lang.reflect.Method.invoke (Method.java:521) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): at dalvik.system.NativeStart.main (собственный метод) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): вызвано: java.lang.ClassNotFoundException: com.tecmark.WcFinderActivity в загрузчике dalvik.system.PathClassLoader@43e57a18 01-18 15: 04: 07.278: E / AndroidRuntime (3554): at dalvik.system.PathClassLoader.findClass (PathClassLoader.java:243) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): в java.lang.ClassLoader.loadClass (ClassLoader.java:573) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): по адресу java.lang.ClassLoader.loadClass (ClassLoader.java:532) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.Instrumentation.newActivity (Instrumentation.java:1021) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2409) 01-18 15: 04: 07.278: E / AndroidRuntime (3554): ... еще 11

.

<?xml version="1.0" ?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.tecmark"
            android:versionCode="1"
            android:versionName="1.0" >

            <uses-sdk android:minSdkVersion="7" />
             <uses-permission android:name="android.permission.INTERNET"></uses-permission>
            <uses-library android:name="com.google.android.maps" />
            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

            <application
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name" >
                <activity
                    android:name=".WcFinderActivity"
                    android:label="@string/app_name" >
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />

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

            </application>



        </manifest>

1 Ответ

0 голосов
/ 18 января 2012

Извините, что сделал глупую ошибку.я переместил тэг Использования-библиотеки внутри тэга приложения, и теперь он компилируется и устанавливается на телефон.Я думаю, что это объясняет, что суперкласс не может быть исправлен как ошибка.моя деятельность расширяет MapActivity, это, вероятно, определено в библиотеке API Google, которая не была объявлена ​​между тегами приложения.

...