1
Display display = null;
String url = "http://188.2.222.253/screenshot.png";    
DataInputStream is = null;
Image img= null;
try 
{
  HttpConnection c = (HttpConnection) Connector.open(url);
  int len = (int)c.getLength();

  if (len > 0) 
  {
    is = c.openDataInputStream();
    byte[] data = new byte[len];
    is.readFully(data);
    img = Image.createImage(data, 0, len);
    Form f = new Form("Image");      
    GameCanvas gc = null;
    Graphics g = null;
    g.drawImage(img, 0, 0, 0); //NullPointerException
    gc.paint(g);
    display.setCurrent(gc); 
  } 
  else 
  {
    showAlert("length is null");
  }
  is.close();
  c.close();
} 
catch (Exception e) 
{
  e.printStackTrace();
  showAlert(e.getMessage());
}

g.drawImage(img, 0, 0, 0) は NullPointerException をスローします。つまり、img は null ( http://docs.oracle.com/javame/config/cldc/ref-impl/midp2.0/jsr118/javax/microedition/lcdui/Graphics.html ) です。ImageItem とその NOT null で img を使用できます。問題は何ですか?

4

1 に答える 1

0

Graphics g = nullを呼び出す直前に設定していますg.drawImage(img, 0, 0, 0)imgnullはあなたのものではありません。それはあなたの Graphics オブジェクトです。

GameCanvas gc = nullまた、呼び出す前に3行を設定していますgc.paint(g)-別のNullPointerException.

GameCanvasさらに、このアプローチを使用して を作成および描画することはできません。GameCanvas抽象クラスです。したがって、拡張する独自のクラスを作成する必要がありますGameCanvas- aGameCanvasが必要な場合。画像を表示することだけが必要な場合は、簡単にフォームに落ち着くことができるため、それが当てはまるかどうかもわかりません。

代わりにこれを試してください:

img = Image.createImage(data, 0, len);
Form f = new Form("Image");
f.append(img);
display.setCurrent(f);
于 2013-07-29T05:46:24.470 に答える