2014-02-21 124 views
0

我正在连接到一个网站,我从哪里获取新闻并将它们放入列表中。当我点击新闻(标题)时,我想转到另一个页面,在那里我可以看到新闻的内容。我正在使用jsoup来做这件事。 Logcat不会给我任何错误,但当我点击标题时,应用程序会崩溃。使用jsoup访问新闻的内容

这里是我的活动:

公共类TargetActivity1延伸活动{ 的ListView LISTA;

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.web); 

    Parse parsing = new Parse(); 
    parsing.execute(); 

} 

private class Parse extends AsyncTask<Void, Void, Void> { 

    String desc; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      // Connect to the web site 
      Document document = Jsoup.connect(
        "http://www.polimi.it/en/news/").get(); 
      // Using Elements to get the Meta data 
      Elements description = document.select("div .news-list-item a"); 
      // Locate the content attribute 
      desc = description.attr("href"); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // Set description into TextView 
     WebView txtdesc = (WebView) findViewById(R.id.webView2); 

     txtdesc.addView(txtdesc); 

     Intent i = new Intent(Intent.ACTION_VIEW); 
     i.setData(Uri.parse(desc)); 
     startActivity(i); 
     txtdesc.removeAllViews(); 

    } 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 

     Intent myIntent = new Intent(getApplicationContext(), 
       MainActivity.class); 
     startActivityForResult(myIntent, 0); 

     return true; 

    } 
    return super.onOptionsItemSelected(item); 
} 

}

+0

如果你的应用程序崩溃了,你应该在logcat中有一些东西 – nikis

+0

是的。它说:找不到处理意图的活动{act = android.intent.action.VIEW dat =(我从中解析的网站)}。所以问题与意图,但我不明白为什么。 – user2928230

回答

0

Parse类是错误的,它应该是这样的:

private class Parse extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     String desc = ""; 
     try { 
      // Connect to the web site 
      Document document = Jsoup.connect(
        "http://www.polimi.it/en/news/").get(); 
      // Using Elements to get the Meta data 
      Elements description = document.select("div .news-list-item a"); 
      // Locate the content attribute 
      desc = description.attr("href"); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return desc; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     // Set description into TextView 
     WebView txtdesc = (WebView) findViewById(R.id.webView2); 

     txtdesc.addView(txtdesc); // adding txtdesc to txtdesc? it's wrong, bug 

     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(result)); 
     startActivity(i); 

     txtdesc.removeAllViews(); 

    } 
} 

请阅读有关的AsyncTask这里http://developer.android.com/reference/android/os/AsyncTask.html。如上所述,doInBackground的结果可以传递给onPostExecute。另外请注意,你正在试图增加一个视图,我已经评论它。