Пишу приложение на Android Studio конвертер валют, но столкнулся с проблемой. Приложение вылетает при нажатии на кнопку "рассчитать". Приложение парсит текущий курс с цб и конвертирует значение в доллары и евро. Не могли бы вы подсказать, что не так? Android Studio варнинги не показывает...
package com.example.converter;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.AsyncTask;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.io.IOException;
import android.view.View;
import android.widget.*;
public class MainActivity extends AppCompatActivity {
TextView enterValue;
TextView calculatedEuroValue;
TextView calculatedDollarValue;
TextView currentDollarValue;
TextView currentEuroValue;
Calculate calculate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
enterValue = findViewById(R.id.converterText);
calculatedEuroValue = findViewById(R.id.euroText);
calculatedDollarValue = findViewById(R.id.dollarText);
currentEuroValue = findViewById(R.id.currentEuroValue);
currentDollarValue = findViewById(R.id.currentDollarValue);
}
public void CalculateButton(View v) {
calculate = new Calculate();
calculate.execute();
}
class Calculate extends AsyncTask<Void, Void, Void> {
Document docDollar;
Document docEuro;
Element dollarValue;
Element euroValue;
String dollarValueOf;
String euroValueOf;
{
dollarValueOf = "60";
euroValueOf = "70";
}
@Override
protected void onPreExecute() {
super.onPreExecute();
currentDollarValue.setText(String.valueOf(dollarValueOf));
currentEuroValue.setText(String.valueOf(euroValueOf));
}
@Override
protected Void doInBackground(Void... params) {
try {
docDollar = Jsoup.connect("https://finance.rambler.ru/currencies/USD/?utm_medium=widget").get();
dollarValue = docDollar.selectFirst("div.finance-currency-plate__currency");
dollarValueOf = dollarValue.select("div.finance-currency-plate__currency").text();
docEuro = Jsoup.connect("https://finance.rambler.ru/currencies/EUR/?utm_medium=widget").get();
euroValue = docEuro.selectFirst("div.finance-currency-plate__currency");
euroValueOf = euroValue.select("div.finance-currency-plate__currency").text();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
currentDollarValue.setText(String.valueOf(dollarValueOf));
currentEuroValue.setText(String.valueOf(euroValueOf));
double tempEntered = Double.parseDouble(enterValue.toString());
double tempDollar = Double.parseDouble(dollarValueOf);
double tempEuro = Double.parseDouble(euroValueOf);
double temp = tempEntered / tempEuro;
calculatedEuroValue.setText(String.valueOf(temp));
temp = tempEntered / tempDollar;
calculatedEuroValue.setText(String.valueOf(temp));
}
}
}
Лог ошибки
2020-01-23 15:36:38.346 31412-31412/com.example.converter E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.converter, PID: 31412
java.lang.NumberFormatException: For input string: "androidx.appcompat.widget.AppCompatTextView{2e8afa3 V.ED..... ........ 0,0-1239,102 #7f09004c app:id/converterText}"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.example.converter.MainActivity$Calculate.onPostExecute(MainActivity.java:82)
at com.example.converter.MainActivity$Calculate.onPostExecute(MainActivity.java:41)
at android.os.AsyncTask.finish(AsyncTask.java:696)
at android.os.AsyncTask.access$600(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:713)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
java.lang.SecurityException: Permission denied (missing INTERNET permission?)
эта ошибка говорит о том что Вам нужны разрешения приложения на использование интернета
в AndroidManifest добавьте
<uses-permission android:name="android.permission.INTERNET" />
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день друзья и подруги , помогите вставить addBatch()в данный код
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском