Ошибка NullPointerException при вставке данных из xml

133
20 сентября 2021, 17:10

В android studio при запуске эмулятора вылетает такая ошибка -

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.converter, PID: 9481
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.converter/com.example.converter.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'double[] com.example.converter.GetCurrencies.getCurrencies(java.lang.String)' on a null object reference

Подскажите что делать.

MainActivity.java

public class MainActivity extends AppCompatActivity {
public TextView eur;
public TextView usd;
public TextView jpy;
Calendar dateAndTime = Calendar.getInstance();
GetCurrencies getCurrencies;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    eur = findViewById(R.id.EUR);
    usd = findViewById(R.id.USD);
    jpy = findViewById(R.id.JPY);
    fillTop();
}
public String Finalout(String valute, double course) {
    return String.format("%s : %s", valute, course);
}
public String TodayLink() {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
    return String.format("http://www.cbr.ru/scripts/XML_daily.asp?date_req=%s", simpleDateFormat.format(dateAndTime.getTime()));
}

public void fillTop(){
    eur.setText(Finalout("EUR", getCurrencies.getCurrencies(TodayLink())[0]));
    usd.setText(Finalout("USD", getCurrencies.getCurrencies(TodayLink())[1]));
    jpy.setText(Finalout("JPY", getCurrencies.getCurrencies(TodayLink())[2]));
}
}

GetCurrencies.java

public class GetCurrencies {
    double eur = 0;
    double usd = 0;
    double jpy = 0;

    public double[] getCurrencies(String urlString) {
        //Create empty values for our currencies
        try {
            URL link = new URL(urlString);
            // Сreate dbf for DocumentBuilder
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //для подгрузки документа - возвращение объекта класса
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document = db.parse(new InputSource(link.openStream())); //парсинг структуры создание иерархии;
            NodeList nodeList = document.getElementsByTagName("Valute"); //взяли все с тегов с именем Valute
            String value;
            ArrayList<String> currencies_list = new ArrayList<String>();
            for (int i = 0; i < nodeList.getLength(); i++) {
                Element element = (Element) nodeList.item(i);
                value = element.getElementsByTagName("Value").item(0).getTextContent();
                currencies_list.add(value);
            }
            String USD = currencies_list.get(10).replace(",",".");
            usd = Double.parseDouble(USD);
            String EUR = currencies_list.get(11).replace(",",".");
            eur = Double.parseDouble(EUR);
            String JPY = currencies_list.get(33).replace(",",".");
            jpy = Double.parseDouble(JPY);
        } catch (IOException | ParserConfigurationException | SAXException | NullPointerException e) {
            e.printStackTrace();
        }
        return new double[] {eur, usd, jpy};
   }
}
READ ALSO
при обучении по Шилдту (непонятен нюанс)

при обучении по Шилдту (непонятен нюанс)

код ниже работает все отлично-непонятно другое int miles мы не задавали значений (расстояния) а задали их int dist = 252; По идее же тут вместо miles должно...

171
Сохранение изменений MariaDB

Сохранение изменений MariaDB

Как сохранить результат запроса в таблицу?

114
Свой шрифт в Тильде html-блок

Свой шрифт в Тильде html-блок

Нужна помощь/советМне необходимо в конструкторе сайтов https://tilda

181
Что такое замыкания в JS?

Что такое замыкания в JS?

Лексическое окружение понятно, а как понять замыкания в JSКакую функцию она выполняет

172