Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android调用数组列表会导致程序崩溃_Java_Android_Mobile_Arraylist - Fatal编程技术网

Java Android调用数组列表会导致程序崩溃

Java Android调用数组列表会导致程序崩溃,java,android,mobile,arraylist,Java,Android,Mobile,Arraylist,我写了一些代码,在一个类中我创建并填充了一个数组列表,我可以从另一个类调用并打印出来,但是当我尝试从第三个类调用它时,会导致移动应用程序关闭。以下是数组列表的代码: public class MyPositionOverlay extends ItemizedOverlay<OverlayItem> { public ArrayList<OverlayItem> overlayItemList = new ArrayList<OverlayItem>

我写了一些代码,在一个类中我创建并填充了一个数组列表,我可以从另一个类调用并打印出来,但是当我尝试从第三个类调用它时,会导致移动应用程序关闭。以下是数组列表的代码:

public class MyPositionOverlay extends ItemizedOverlay<OverlayItem> {

    public ArrayList<OverlayItem> overlayItemList = new ArrayList<OverlayItem>();
    Context context;


    public MyPositionOverlay(Drawable marker, Context c) {
        super(boundCenterBottom(marker));
        // TODO Auto-generated constructor stub
        populate();
        context = c;


    }
    private final int mRadius = 5;

    Location location;

    public Location getLocation() {
        return location;
    }
    public void setLocation(Location location) {;
    this.location = location;
    }

    //Method for user intputs - fill in
    @Override
    public boolean onTap(GeoPoint point, MapView mapView) {

        if(super.onTap(point, mapView)){
            return true;
        }
        String title = "Point:" + String.valueOf(overlayItemList.size()+ 1) + "\n" +
                "Lat:" + "\n" + String.valueOf(point.getLatitudeE6() + 
                        "Long:" + "\n" + String.valueOf(point.getLongitudeE6()));
        String snippet = "geo:\n"
                + String.valueOf(point.getLatitudeE6()) + "\n"
                + String.valueOf(point.getLongitudeE6());

        addItem(point, title, snippet);



        //return true;
        //if(hit test is true)
        //  perform task
        // return true;
        //if not handled

        return false;
    }

    @Override
    protected boolean onTap(int index) {
        // TODO Auto-generated method stub
        //return super.onTap(index);

        Toast.makeText(context,
                "Touch on marker: \n" + overlayItemList.get(index).getTitle(),
                Toast.LENGTH_LONG).show();

        return true;
    }

    public void addItem(GeoPoint point, String title, String snippet){
        OverlayItem newItem = new OverlayItem(point, title, snippet);
        overlayItemList.add(newItem);
        populate();
    }



    @Override
    protected OverlayItem createItem(int i) {
        // TODO Auto-generated method stub
        return overlayItemList.get(i);
    }
    @Override
    public int size() {
        // TODO Auto-generated method stub
        return overlayItemList.size();
    }
}
以下是我收到的错误消息:

06-06 17:14:05.210: W/dalvikvm(1301): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-06 17:14:05.220: E/AndroidRuntime(1301): FATAL EXCEPTION: main
06-06 17:14:05.220: E/AndroidRuntime(1301): java.lang.NullPointerException
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.Maps.GeneticAlgorithm2.start(GeneticAlgorithm2.java:97)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.Maps.HomeScreen$3.onClick(HomeScreen.java:152)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.view.View.performClick(View.java:2408)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.view.View$PerformClick.run(View.java:8816)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.os.Handler.handleCallback(Handler.java:587)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.os.Looper.loop(Looper.java:123)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at java.lang.reflect.Method.invokeNative(Native Method)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at java.lang.reflect.Method.invoke(Method.java:521)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at dalvik.system.NativeStart.main(Native Method)
从我所看到的情况来看,数组列表是空的,但正如我所说的,我可以很高兴地从另一个类输出它


请帮助。

在您的
开始
方法中
位置覆盖
为空,您刚刚声明了它,但在访问此字段之前尚未初始化它,因此NPE。

在您的
开始
方法中
位置覆盖
为空,您刚刚声明了它,但在访问此字段之前尚未初始化它,因此NPE。

如果不理解您的用例,这是一个很难回答的问题,无论如何,请看一看这个,好的,但在我看来是应该工作。我有在顶部我的位置覆盖;它将我链接到数组列表所在的类,然后在start方法中我有int populationSize3=positionOverlay.size()。我在另一个班上使用了相同的过程,并且在你的另一个班上进行了精细检查。你在做这样的事情吗。positionOverlay=somePositionOverlay?或者positionOverlay=new MyPositionOverlay()?如果不理解您的用例,这是一个很难回答的问题,不管怎样,请看一看这个问题,好吧,但在我的头脑中是应该工作。我有在顶部我的位置覆盖;它将我链接到数组列表所在的类,然后在start方法中我有int populationSize3=positionOverlay.size()。我在另一个班上使用了相同的过程,并且在你的另一个班上进行了精细检查。你在做这样的事情吗。positionOverlay=somePositionOverlay?或者positionOverlay=new MyPositionOverlay()?
06-06 17:14:05.210: W/dalvikvm(1301): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-06 17:14:05.220: E/AndroidRuntime(1301): FATAL EXCEPTION: main
06-06 17:14:05.220: E/AndroidRuntime(1301): java.lang.NullPointerException
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.Maps.GeneticAlgorithm2.start(GeneticAlgorithm2.java:97)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.Maps.HomeScreen$3.onClick(HomeScreen.java:152)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.view.View.performClick(View.java:2408)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.view.View$PerformClick.run(View.java:8816)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.os.Handler.handleCallback(Handler.java:587)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.os.Looper.loop(Looper.java:123)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at android.app.ActivityThread.main(ActivityThread.java:4627)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at java.lang.reflect.Method.invokeNative(Native Method)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at java.lang.reflect.Method.invoke(Method.java:521)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-06 17:14:05.220: E/AndroidRuntime(1301):     at dalvik.system.NativeStart.main(Native Method)