2

Mainのクラスでは、何かをするために別のクラスを呼び出し、データをクラスに戻す必要がありMainますが、アプリケーションの起動時に何らかの理由でクラッシュします。

私のMainアクティビティ-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);
    } 
}

マイポイントクラス:

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;
    }
}

私がメインから呼んでいるクラス:

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
4

1 に答える 1

0

私は最終的に以下を使用しました:

Androidでグローバル変数を宣言する方法は?

これにより、GPS位置を取得したときにGPS位置をまっすぐに保存することができました。LocationListener

于 2012-01-03T16:10:43.500 に答える