@i_am_mrld
Не всё в жизни решается Hard Reset'ом

Почему вылетает андроид приложение?

Решил написать штуку, выводящую молярную массу химических соединений, но при нажатии кнопки посчитать происходит вылет. Использую простой поиск по файлу, привожу код
package com.example.chemcalc;

import java.io.*;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

	EditText etNum1;

	Button btnAdd;

	TextView tvResult;

	String oper = "";

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// находим элементы
		etNum1 = (EditText) findViewById(R.id.etNum1);

		btnAdd = (Button) findViewById(R.id.btnAdd);

		tvResult = (TextView) findViewById(R.id.tvResult);

		// прописываем обработчик
		btnAdd.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		String comp = etNum1.getText().toString();
		// Проверяем поля на пустоту
		if (TextUtils.isEmpty(etNum1.getText().toString())) {
			return;
		}

		// читаем EditText и заполняем переменные числами
		String com1 = etNum1.getText().toString();

		// определяем нажатую кнопку и выполняем соответствующую операцию
		switch (v.getId()) {
		case R.id.btnAdd:
			String str = null;

			try {
				URL url = new URL("http://picpost.w.pw/elements.txt");
				LineNumberReader lnr = new LineNumberReader(new BufferedReader(
						new InputStreamReader(url.openStream())));
				Pattern p1 = Pattern.compile(com1 + " = (\\w+).*");
				while (((str = lnr.readLine()) != null)) {
					Matcher m = p1.matcher(str);
					if (m.find()) {
						// System.out.println( m.group(1));
						// result = m.group(1);
						tvResult.setText("Масса" + comp + "=" + m.group(1));
					}
				}
				lnr.close();
			} catch (IOException e) {
				tvResult.setText("I/O Error!");
			}

		}
	}
}

специально для некоторых товарищей: вылетает банально приложение остановилось.
  • Вопрос задан
  • 5572 просмотра
Пригласить эксперта
Ответы на вопрос 3
@vilgeforce
Раздолбай и программист
Где вылетает и как, ясное дело, писать не надо. Все соберут приложение, проверят и поймут где проблема, разумеется!
Ответ написан
Комментировать
@constv
Нельзя работать с сетью в UI потоке, поэтому и вылетает. Используй AsyncTask
Ответ написан
deenween
@deenween
Laravel
log cat тебе поможет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы