2013-10-12 2 views
0

Недавно я начал разрабатывать программы на Android и имел небольшую проблему с этим простым кодом. Я пытаюсь разобрать заголовок веб-сайта и сохранен в строке, но пока не увенчался успехом. Это потому, что я не делаю это в Async? Или это могут быть разные проблемы?Простой код Jsoup для Android

http://s9.postimg.org/ikycjit9b/android.png

public class MainActivity extends Activity implements OnClickListener { 

    private Button btnSearch; 
    private EditText editTextCarReg; 

    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //------------------------------------------------- 
     btnSearch = (Button) findViewById(R.id.btnSearch); 
     btnSearch.setOnClickListener(this); 
     //------------------------------------------------ 
     editTextCarReg = (EditText) findViewById(R.id.editTextRegistration); 
     editTextCarReg.setOnClickListener(this); 

    } 


    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    public void example() throws IOException 
    { 
     Document doc = Jsoup.connect("http://http://9gag.com/").get(); 
     String title = doc.title(); 
    } 

    public void onClick(View v) 
    { 
     if(v.getId() == btnSearch.getId()) 
     { 
      try { 
       example(); 
      } catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 


} 
} 
+0

Большое спасибо, я стараюсь как Maxim, так и user1920666, и они работают. users1920666 way seams более «хакерские», но и более простые. Я думаю, что сейчас буду использовать его, пока не получу больше опыта в этой теме. Престижность! – Michal

ответ

0

Из журналов:

android.os.NetworkOnMainThreadException 

Это исключение, когда приложение пытается выполнить операцию сети на ее главном потоке.

Пробег Jsoup logic в AsyncTask.

(убедитесь, что вы добавили <uses-permission android:name="android.permission.INTERNET"/> а)

Вы можете написать что-то вроде:

class JsoupTask extends AsyncTask<String, Void, Void> { 

    private Exception exception; 

    protected void doInBackground(String... url) { 
     Document doc = Jsoup.connect(url).get(); 
     String title = doc.title(); 
     ... 

    } 

    protected void onPostExecute(RSSFeed feed) { 
     // here you can update your UI thread through Handler, for example 
    } 
} 

И позвони, как:

new JsoupTask().execute(url); 
0
public static int SDK_INT = android.os.Build.VERSION.SDK_INT; 

писать этот код, прежде чем ваш запрос

if (SDK_INT >= 10) { 
       ThreadPolicy tp = ThreadPolicy.LAX; 
       StrictMode.setThreadPolicy(tp); 
      } 

Использование asynctask - лучшая практика.