2015-03-18 4 views
1

Я хочу показать заголовок газет и новости в приложении для Android. Поэтому сначала я создаю проект Java и отлично выполняю свою задачу. вот моя ява проекты классыИсключение NullPointer в элементе Jsoup

Main.java

package com.emon.newsportal; 

import java.io.ObjectInputStream.GetField; 
import java.util.List; 

public class Main { 

    public static void main(String[] args) { 
     newspaperTest(new NewAge()); 
    } 

    private static void newspaperTest(Newspaper newspaper) { 
     List<Headline>headlines=newspaper.getAllSportsHeadLines(); 

     System.out.println(newspaper.getSportsNews(headlines.get(0))); 
     System.out.println(headlines.get(0).getHeading()); 
    } 


} 

NewAge.java

package com.emon.newsportal; 



import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class NewAge extends Newspaper{ 

    protected List<Headline> getHeadlines(String baseUrl) { 
     List<Headline> headlines = new ArrayList<Headline>(); 

     Document document = connectToTheWebpage(baseUrl); 

     Elements elements = document.select("h2 a"); 


     for (Element element : elements) { 

      Headline headline = new Headline(element.text(), 
        element.attr("href")); 
      headlines.add(headline); 

     } 
//  System.out.println(""+headlines); 
     return headlines; 
    } 

    protected String getNews(Headline headline) { 
     Document document = connectToTheWebpage(headline.getUrl()); 

     return document.select("body p").get(0).text(); 
    } 

    @Override 
    public List<Headline> getAllSportsHeadLines() { 
     // TODO Auto-generated method stub 
     return getHeadlines("http://newagebd.net/category/sport/"); 
    } 



    @Override 
    public List<Headline> getALLPoliticalHeadlines() { 
     // TODO Auto-generated method stub 
     return getHeadlines("http://newagebd.net/category/politics/"); 
    } 



    @Override 
    public List<Headline> getALLEntertainmentHeadlines() { 
     // TODO Auto-generated method stub 
     return getHeadlines("http://newagebd.net/category/entertain/"); 
    } 


    @Override 
    public List<Headline> getALLBusinessHeadlines() { 
     // TODO Auto-generated method stub 
     return getHeadlines("http://newagebd.net/category/bizn/"); 
    } 

} 

Но когда я пытаюсь реализовать этот же проект в Android это дает исключение NullPointer в NewAge. Java класс

Elements elements = document.select("h2 a"); 

вот мой журнал ошибок

03-18 14:49:53.974 1056-1070/com.songkeet.news_a W/System.err﹕ java.lang.NullPointerException 
03-18 14:49:53.974 1056-1070/com.songkeet.news_a W/System.err﹕ at com.songkeet.news_a.NewAge.getHeadlines(NewAge.java:27) 
03-18 14:49:53.974 1056-1070/com.songkeet.news_a W/System.err﹕ at com.songkeet.news_a.NewAge.getAllSportsHeadLines(NewAge.java:50) 
03-18 14:49:53.974 1056-1070/com.songkeet.news_a W/System.err﹕ at com.songkeet.news_a.MainActivity$1.run(MainActivity.java:36) 
03-18 14:49:53.984 1056-1070/com.songkeet.news_a W/System.err﹕ at  java.lang.Thread.run(Thread.java:856) 

Можете ли вы мне предложить, я могу исправить эту ошибку? Спасибо

+2

Люди должны оставлять комментарии о том, почему они были заблокированы. – rottenoats

ответ

0

Если у вас есть NullPointerException на

Elements elements = document.select("h2 a"); 

Это означает, что document равна нулю. Вы должны посмотреть на метод connectToTheWebpage(baseUrl) (вы не предоставляете).

+0

Здесь мой метод защищен Документ connectToTheWebpage (String baseUrl) { \t \t Документ document = null; \t \t try { document = Jsoup.connect (baseUrl) .timeout (10 * 10000) .get(); \t \t} поймать (IOException е) { \t \t \t e.printStackTrace(); \t \t} \t \t документ о возврате; \t} – emon

+0

Я также думал, что это может быть так: document.select («h2 a»); 'не возвращать то, что вы ожидаете, поскольку контент/макет для мобильного устройства определенно отличается от содержимого ПК. Но тогда 'select' должен возвращать пустые' Elements', а не 'null'. Другая возможность заключается в том, что вы не установили права доступа для приложения andoid для подключения к Интернету: в 'AndroidManifest.xml' вам нужно' '. –

+0

Спасибо за ваш ответ. Я установил права доступа. – emon

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