0

いくつかの内部クラスを持つJavaクラスがあります。これは、整理し、別のファイルに保管するために行われます。

public class PUCObjects
{

    public static class PUCNewsItem
    {

        public String title;
        public String summary;
        public String body;
        public String url;
        public String imageUrl;

    }

}

次に、その内部クラスの新しいインスタンスを作成しようとしています (リモート XML を解析する別のクラスでこれを行っています) が、何らかの理由で作成されていないようです:

public static ArrayList<PUCObjects.PUCNewsItem> getPUCNews() throws IOException {

        String url = "http://api.puc.edu/news/list?key="+API_KEY+"&count=30";
        InputStream is = downloadUrl(url);
        XmlPullParserFactory pullParserFactory;

        try {
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();
            parser.setInput(is, null);

            ArrayList<PUCObjects.PUCNewsItem> items = null;
            int eventType = parser.getEventType();
            PUCObjects.PUCNewsItem item = null;
            Log.d("Debug: ", "Start: "+url);
            while (eventType != XmlPullParser.END_DOCUMENT){
                String name = null;
                switch (eventType){
                    case XmlPullParser.START_DOCUMENT:
                        items = new ArrayList<PUCObjects.PUCNewsItem>();
                        break;
                    case XmlPullParser.START_TAG:
                        name = parser.getName();
                        //Log.d("Start Tag Name: ", parser.getName()+"  ===  "+name);
                        if (name == "item"){
                            Log.d("Debug: ", "Item");
                            item = new PUCObjects.PUCNewsItem();
                        } else if (item != null){
                            Log.d("Debug: ", "Item is not NULL 2");
                            if (name == "title"){
                                Log.d("Title: ", parser.nextText());
                                item.title = parser.nextText();
                            } else if (name == "summary"){
                                item.summary = parser.nextText();
                            } else if (name == "body_text"){
                                item.body = parser.nextText();
                            }  
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        name = parser.getName();
                        if (name.equalsIgnoreCase("item") && item != null) {
                            Log.d("Debug: ", "ADD ITEM");
                            items.add(item);
                        }
                        break;
                }//end switch

                eventType = parser.next();

            }//end while

            Log.d("Debug: ", "Done");
            return items;

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;

    }//end

のようなオブジェクトを作成しようとしていますitem = new PUCObjects.PUCNewsItem();が、常に のようnullです。

これがオブジェクトが作成されない理由はありますか?

4

1 に答える 1

5

問題はString比較です。あなたのifステートメントは、チェックtrueのために発生しません。==

if (name == "item"){

オブジェクト/文字列を比較するときequals()の代わりにメソッドを使用する必要があります。equals() と ====の詳細については、このスレッドを参照してください。

于 2013-09-04T17:26:31.167 に答える