【问题标题】:Application crashing for some reason: returning and assigning problems应用程序由于某种原因崩溃:返回和分配问题
【发布时间】:2012-01-24 10:11:11
【问题描述】:

在我的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;
    }
}

我从 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

【问题讨论】:

  • 也请发布 logcat。我怀疑 NullPointerException
  • @Neeta:第 123 行是什么?请张贴那个
  • 我想你在 run() 函数之前调用 returnLocation。
  • @Parth_90 这是一个预定义的类,我没有定义类Location
  • @user370305 我已经忽略了 LocationHandler 类的复杂性。我知道我的问题只是分配问题。我认为 Yahor10 在 run() 有机会运行之前调用 returnLocation 是正确的。

标签: android location return assign


【解决方案1】:

我最终使用了:

How to declare global variables in Android?

这让我可以在它在LocationListener 中检索到 GPS 位置时直接保存它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2016-05-10
    • 2022-07-24
    • 2020-03-26
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多