2014-02-21 3 views
0

나는 뉴스를 가져 와서 목록에 넣는 웹 사이트에 연결하고 있습니다. 뉴스 (제목)을 클릭하면 뉴스 내용을 볼 수있는 다른 페이지로 이동하고 싶습니다. 나는 jsoup를 사용하여 이것을하고있다. Logcat은 나에게 어떤 오류도주지 않지만 앱이 제목을 클릭 할 때 부셔 버립니다. 여기 jsoup를 사용하여 뉴스 콘텐츠에 액세스하기

내 활동 :

TargetActivity1이 활동 { 의 ListView 중고 장비 구매를 확장

공용 클래스;

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

예. 그것은 말합니다 : 어떤 활동도 intent {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(); 

    } 
} 

여기 http://developer.android.com/reference/android/os/AsyncTask.html AsyncTask를 읽어 보시기 바랍니다. doInBackground의 결과는 위와 같이 onPostExecute으로 전달할 수 있습니다. 또한 자신에게보기를 추가하려고하는 메모를 보내주십시오. 나는 주석을 달았습니다.

관련 문제