views:

180

answers:

1

Uncaught exception: java.lang.Error: Static initializer: java.lang.NullPointerException, 0 - java.lang.Class.throwError(), bci=57 - java.lang.Class.initialize(), bci=221 - com.sun.lwuit.Component.(), bci=5 - com.sun.lwuit.Container.(), bci=1 - com.sun.lwuit.Form.(), bci=8 - com.sun.lwuit.Form.(), bci=1 - com.midlet.RSSMidlet.(), bci=11 - java.lang.Class.newInstance(), bci=0 - com.sun.midp.main.CldcMIDletLoader.newInstance(), bci=46 - com.sun.midp.midlet.MIDletStateHandler.createMIDlet(), bci=66 - com.sun.midp.midlet.MIDletStateHandler.createAndRegisterMIDlet(), bci=17 - com.sun.midp.midlet.MIDletStateHandler.startMIDlet(), bci=9 - com.sun.midp.midlet.MIDletStateHandler.startMIDlet(), bci=4 - com.sun.midp.appmanager.SelectorBase.run(), bci=33 - java.lang.Thread.run(), bci=11

package com.midlet;

import java.io.IOException; import java.io.InputStreamReader; import java.util.Vector;

import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import org.kxml2.io.KXmlParser; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException;

import com.sun.lwuit.Command; import com.sun.lwuit.Display; import com.sun.lwuit.Form; import com.sun.lwuit.List; import com.sun.lwuit.animations.Transition3D; import com.sun.lwuit.events.ActionEvent; import com.sun.lwuit.events.ActionListener; //import com.sun.lwuit.list.ListModel; import com.sun.lwuit.layouts.BorderLayout; import com.sun.lwuit.plaf.UIManager; import com.sun.lwuit.util.Resources;

public class RSSMidlet extends MIDlet implements ActionListener{

public Vector feedVector;
public String rssFeed; 
private Command cmdSelect;
private Command cmdExit;

private Form form1 = new Form("Feeds List");

// private Form form2 = new Form("Feed Description");

// private Vector feed_Title; private List resultList; // private List feedTitle; public RSSModel model = new RSSModel();

class ReadXML extends Thread{

    public void run(){
        try{
            rssFeed = "http://www.rottentomatoes.com/syndication/rss/top_news.xml";
            HttpConnection httpConnection = (HttpConnection) Connector.open(rssFeed);
            KXmlParser parser = new KXmlParser();
            parser.setInput(new InputStreamReader(httpConnection.openInputStream()));

            parser.nextTag();
            parser.require(XmlPullParser.START_TAG, null, null);
            while(parser.nextTag() != XmlPullParser.END_TAG){
                parser.nextTag();
                parser.require(XmlPullParser.START_TAG, null, "channel");
                readXMLData(parser);
                parser.require(XmlPullParser.END_TAG, null, "channel");
            }
            parser.require(XmlPullParser.END_TAG, null, "rss");
            parser.next();
            parser.require(XmlPullParser.END_DOCUMENT, null, null);
        }catch(Exception e){

        }
    }
}

public RSSMidlet() {
    // TODO Auto-generated constructor stub
    Display.init(this);
    Resources r;
    try{
        r = Resources.open("/LWUITtheme.res");
        UIManager.getInstance().setThemeProps(r.getTheme("LWUITDefault"));
    }catch(IOException e){
        //e.printStackTrace();
    }




    resultList = new List();
    for(int i=0; i<feedVector.size();i++){
        model = (RSSModel) feedVector.elementAt(i);
        resultList.addItem(model.getTitle().toString());
    }


    form1.addComponent(BorderLayout.CENTER,resultList);
    form1.addCommand(cmdExit);
    form1.addCommand(cmdSelect);
    form1.setScrollable(true);
    //form1.addCommandListener((ActionListener) this);
    form1.setTransitionInAnimator(Transition3D.createRotation(250, true));
    form1.show();
}

protected void destroyApp(boolean unconditional)
        throws MIDletStateChangeException {
    // TODO Auto-generated method stub

}

protected void pauseApp() {
    // TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {
    // TODO Auto-generated method stub


    new ReadXML().start();
}

public void readXMLData(KXmlParser parser) throws IOException, XmlPullParserException{


    while(!"item".equals(parser.getName()) ){
        /** Check if document doesn't include any item tags */
        if( parser.next() == XmlPullParser.END_DOCUMENT )
            throw new IOException("No items in RSS feed!");
    }

    parser.require(XmlPullParser.START_TAG, null, "item");



    while(parser.nextTag() != XmlPullParser.END_TAG){

        parser.require(XmlPullParser.START_TAG, null, null);
        String name = parser.getName();
        String text = parser.nextText();
        //System.out.println ("<"+name+">"+text);

        if(name.equals("pubDate")){
            model.setPubDate(text);
        }else if(name.equals("title")){
            model.setTitle(text);
        }else if(name.equals("link")){
            model.setLink(text);
        }else if(name.equals("description")){
            model.setDescription(text);
        }
        parser.require(XmlPullParser.END_TAG, null, name);
    }
    feedVector.addElement(model);
    parser.require(XmlPullParser.END_TAG, null, "item");
}

public void actionPerformed(ActionEvent evt) {
    // TODO Auto-generated method stub
    if(evt.getCommand() == cmdExit){
        notifyDestroyed();
    }else if(evt.getCommand() == cmdSelect){

    }
}

}

This is my codes. I can't seem to get LWUIT running with kXML. There is a forum post that says that I need to initialize graphics objects after the Display.init(this) line. But where that line should lie? Please assist me...

A: 

The Display.init(your_midlet) is responsible for initializing the Display for LWUIT, no need to do it yourself. Only restriction is, you have to initialize the Display BEFORE you use any Form. Move the line

form1 = new Form("Feeds List")

after the line

Display.init(this);

so you initialize the Form in the Constructor after initializing the Display!

endevour