Blackberry bitmapfield焦点未聚焦问题

Blackberry bitmapfield焦点未聚焦问题,blackberry,java-me,Blackberry,Java Me,我在屏幕中添加了三个位图。图像需要随着焦点和非焦点的变化而变化。现在,如果我在自定义方法中声明位图,而不是从一个图像滚动到另一个图像,则会出现空指针异常。但是,当我在方法外声明位图时,我不会得到任何异常,但是只有最后一个聚焦的图像在任何地方都会聚焦,但是对于三个图像,应该是这样的,三个不同的聚焦图像在那里。下面是我的代码。请帮助 private BitmapField getBitmapField(final Item item, final int cellWid, final int ce

我在屏幕中添加了三个位图。图像需要随着焦点和非焦点的变化而变化。现在,如果我在自定义方法中声明位图,而不是从一个图像滚动到另一个图像,则会出现空指针异常。但是,当我在方法外声明位图时,我不会得到任何异常,但是只有最后一个聚焦的图像在任何地方都会聚焦,但是对于三个图像,应该是这样的,三个不同的聚焦图像在那里。下面是我的代码。请帮助

private BitmapField getBitmapField(final Item item, final int cellWid,  final int cellHgt, final long style) {
        final Bitmap bitmap = Bitmap.getBitmapResource(item.imgUrl);
        final Bitmap bitmapfoc = Bitmap.getBitmapResource(item.imgUrlimp);
        BitmapField bitmapField = new BitmapField(bitmap, style) {
            boolean _inFocus = false;

            protected void onFocus(int direction) {
                _inFocus = true;

                selectedIndex = flowFieldManager.getFieldWithFocusIndex();
                System.out.println("Selected Index :"+selectedIndex);
                if(TextControl.labelField != null)
                TextControl.labelField.setText(item.title);

                super.onFocus(direction);
                //this.invalidate();
            }
            protected void onUnfocus() {
                _inFocus = false;
                super.onUnfocus();
                //this.invalidate();
            }
            public void paint(Graphics graphics) {
                System.out.println("====barView=== :"+barview);

             graphics.drawBitmap(0, 0, bitmap.getWidth(),bitmap.getHeight(), bitmap, 0, 0); //draw bachground image bitmap
             invalidate();
                //super.paint(graphics);
              }
            protected void drawFocus(Graphics g, boolean arg1) {

        g.drawBitmap(0,0, bitmapfoc.getWidth(), bitmapfoc.getHeight(), bitmapfoc, 0, 0); //draw bachground image bitmap
            invalidate();
            }

与您的问题无关,但您不应该从绘制方法内部调用
invalidate()
,因为
invalidate()
表示需要重新绘制。你能给我们一些有用的信息吗,比如NPE在哪里被抛出?在这个方法中,你给两个图像名称,一个是原始的,另一个是更改的。drawFocus()移除焦点的效果。Onfocus给更改图像,unfocus给原始图像。享受。。。。
BitmapField chaneBitmap(String image1,String image2){
    final Bitmap  original= Bitmap.getBitmapResource(image1);
    final Bitmap change = Bitmap.getBitmapResource(image2);
    BitmapField _hold_bitmap=new BitmapField(original,BitmapField.FOCUSABLE){    
        protected void drawFocus(Graphics graphics, boolean on){} 
            public void onFocus(int direction){
                    invalidate();
                    setBitmap(change);
             }

             public void onUnfocus(){
                     super.onUnfocus();
                     setBitmap(original);
             }
        }
}