2013-09-04 5 views
0

У меня есть класс Java, который будет иметь несколько внутренних классов. Это делается для организации и хранения файлов в отдельном файле.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.

Есть ли причина, по которой объект не создается?

ответ

5

Проблема String сравнение. Ваша заявка if не является результатом true из-за ошибки ==.

if (name == "item"){ 

Вы должны использовать equals() метод вместо == при сравнении объектов/Strings. Прочтите эту тему для получения дополнительной информации о eqauals() vs ==

+0

Это сработало. Спасибо! –

+0

@NicHubbard: добро пожаловать. Удачи! – kosa

Смежные вопросы