Сбой приложения по какой-то причине: возврат и назначение проблем - PullRequest
2 голосов
/ 20 декабря 2011

В моем классе Main я вызываю другой класс, чтобы что-то сделать, и мне нужно вернуть данные обратно в класс Main, но по какой-то причине происходит сбой при запуске приложения:

MyMain Активность - происходит сбой getLocation(), что связано с возвратом местоположения и присвоением Point, потому что когда я убираю эти строки, он работает нормально.

public class Main extends Activity {

    ArrayList<Point> gpsCoordinates = new ArrayList<Point>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pages);
        vf = (ViewFlipper) findViewById(R.id.viewFlipper);

        try {
            getLocation(null);
        } catch (InterruptedException e) {}

    }

public synchronized void getLocation(View view) throws InterruptedException
    {

        LocationHandler lh = new LocationHandler();
        lh.getLocation(view,this);
        Location location = new Location(lh.returnLocation());
        Point point = new Point(location.getLongitude(),location.getLatitude());
        gpsCoordinates.add(point);
    } 
}

Класс My Point:

public class Point {

    private double x;
    private double y;

    public Point(double x, double y) {
        this.setX(x);
        this.setY(y);
    }

    public Point(Point point) {
        this.setX(point.getX());
        this.setY(point.getY());
    }

    public String toString(Point point)
    {
        String stringPoint = "";
        stringPoint = "(" + point.getX() + "," + point.getY() + ")";
        return stringPoint;
    }

    public void setX(double x2) {
        this.x = x2;
    }

    public double getX() {
        return this.x;
    }

    public void setY(double y2) {
        this.y = y2;
    }

    public double getY() {
        return this.y;
    }
}

Класс, по которому я звоню с Main:

public class LocationHandler {
    Location location;
    public synchronized void getLocation(final View view, final Main main) throws InterruptedException
    {   

        Thread t = new Thread(){
            public synchronized void run(){

                location = new Location(mlocListener.returnLocation());


            }

        };
        t.start();

    } 

    public Location returnLocation()
    {   
        return location;

    }

}

Журнал ошибок:

12-20 12:35:11.348: E/AndroidRuntime(3466): FATAL EXCEPTION: main
12-20 12:35:11.348: E/AndroidRuntime(3466): java.lang.RuntimeException: Unable to start activity ComponentInfo{mfc.generalgui6api8/mfc.generalgui6api8.Main}: java.lang.NullPointerException
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.os.Looper.loop(Looper.java:123)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.ActivityThread.main(ActivityThread.java:4627)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at java.lang.reflect.Method.invokeNative(Native Method)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at java.lang.reflect.Method.invoke(Method.java:521)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at dalvik.system.NativeStart.main(Native Method)
12-20 12:35:11.348: E/AndroidRuntime(3466): Caused by: java.lang.NullPointerException
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.location.Location.set(Location.java:123)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.location.Location.<init>(Location.java:116)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at mfc.generalgui6api8.Main.getLocation(Main.java:133)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at mfc.generalgui6api8.Main.onCreate(Main.java:44)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-20 12:35:11.348: E/AndroidRuntime(3466):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-20 12:35:11.348: E/AndroidRuntime(3466):     ... 11 more

1 Ответ

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

В итоге я использовал:

Как объявить глобальные переменные в Android?

Это позволило мне сохранить местоположение GPS прямо после его поиска вLocationListener

...