执行runnable时出现空指针异常

时间:2014-06-15 06:22:53

标签: android nullpointerexception

我在两行中得到空指针异常。我在代码中使用注释指定。我已经启动了所有变量并实现了所有方法,但仍然无法弄清楚。请让我知道为什么它显示空指针异常?

 public class PhotoActivity extends Activity implements SetPhotos, OnGestureListener{
 private static final float SWIPE_THRESHOLD = 100;

   private static final float SWIPE_VELOCITY_THRESHOLD = 100;

 ArrayList<String> url = new ArrayList<String>();

    ImageView iv;
      @SuppressLint("UseSparseArrays")
 HashMap<Integer, Bitmap> imagemap = new HashMap<Integer,Bitmap>();

  Handler handler = new Handler();
    String mode;
     int i=0;
      @SuppressWarnings("deprecation")
    GestureDetector swipe = new GestureDetector(this);
         private LruCache<Integer, Bitmap> cache;
     final int max = (int) (Runtime.getRuntime().maxMemory()/1024);
    final int cachesize = max/8;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_photo);
    cache = new LruCache<>(max);
    iv = (ImageView)findViewById(R.id.imageView1);

    if(getIntent().getExtras()!= null){
        this.url = getIntent().getStringArrayListExtra("msg");
        if(getIntent().getExtras().containsKey(MainActivity.PHOTO)){

            mode = getIntent().getStringExtra(MainActivity.PHOTO);
            new Image(i,this).execute(url.get(i));//error null pointer exception
        }
        else if (getIntent().getExtras().containsKey(MainActivity.SLIDE)){
    mode = getIntent().getStringExtra(MainActivity.SLIDE);
    h.run();//error null pointer exception
        }
    }
}
Runnable h = new Runnable() {

    @Override
    public void run() {

        i++;
        if(i==url.size())
            i=0;
        new Image(0,PhotoActivity.this).execute(url.get(i));
        handler.postDelayed(h, 2000);
    }
};




                  @Override
            public Context getContext() {
// TODO Auto-generated method stub
return null;
       } 


              @Override
                public String getMode() {
// TODO Auto-generated method stub
return null;
                   }


          @Override
             public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
        }


        @Override
             public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

            }


             @Override
           public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
            }


            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
    float distanceY) {
// TODO Auto-generated method stub
return false;
                  }


        @Override
             public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub

                           }


              @Override
                 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
    float velocityY) {
boolean result = false;
try {

    float diffX = e2.getX() - e1.getX();

    if (Math.abs(diffX) > SWIPE_THRESHOLD
            && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
        if (diffX > 0) {
            onSwipeRight();
        } else {
            onSwipeLeft();
        }
    }

} catch (Exception exception) {
    exception.printStackTrace();
}
return result;  
             }
               @Override
             public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(mode.equals(MainActivity.PHOTO))
    return swipe.onTouchEvent(event);
    else
return super.onTouchEvent(event);
                   }

            private void onSwipeLeft() {
i--;
if (url!= null) {

    if(i<0)
        i = url.size()-1;
    if (getDrawableFromMemCache(i) == null) {
    new Image(i,this).execute(url.get(i));
    }else
        setPhotos(getDrawableFromMemCache(i));
            }

        }


                 private void onSwipeRight() {
// TODO Auto-generated method stub
i++;
if (url != null) {
    if(i >url.size()-1)
        i=0;
    if (getDrawableFromMemCache(i) == null) {
            new Image(i,this).execute(url.get(i));
        }else
            setPhotos(getDrawableFromMemCache(i));
            }

            }


              private Bitmap getDrawableFromMemCache(int key) {
// TODO Auto-generated method stub

    return cache.get(key);

            }


             public LruCache<Integer, Bitmap> getCache() {
return cache;
                  }

           public void setCache(LruCache<Integer,Bitmap> cache) {
this.cache = cache;
                }

                   @Override
             public void addDrwabletoCache(Bitmap bm) {
// TODO Auto-generated method stub
if (getDrawableFromMemCache(i) == null) {
    cache.put(i, bm);
       }
   }
         @Override
         public void setPhotos(Bitmap bm) {
// TODO Auto-generated method stub
iv.setImageBitmap(bm);
       }

             }

1 个答案:

答案 0 :(得分:0)

getIntent().getStringArrayListExtra("msg");似乎可能返回null,导致url为空。