Из метода doInBackground нельзя обращаться к UI, а у вас прописано обращение к TextView
и EditText
К UI можно обращаться из методов onPreExecute и onPostExecute класса AsyncTask. Например,
public class Calcs extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
res.setText("Insert Compound");
}
@Override
protected String doInBackground(Void... voids) {
String str = null;
.........
...............
//после всех действий возвращаете результат, в вашем случае строку результата, которую нужно отобразить в TextView
return str;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//result - это то, что возвращает метод doInBackground
//обновляете UI
res.setText(result);
}
}
Строку из EditText можно подать на вход doInBackground:
new Calcs().execute(editTextString);
Детальнее c примером в доке про
AsyncTask