Ich habe überprüft, dass die TextView, auf die ich referenziere, korrekt ist und bin sicher, dass die App über Internet-Berechtigungen verfügt.App stürzt ab, wenn AsyncTask verwendet wird
Ich versuche eine App zu schreiben, die den aktuellen Preis von Bitcoin aus der Coinbase API ziehen und in der TextView anzeigen wird. Der Code für die Interaktion mit der API wurde genau von einem Desktop-Java-Programm kopiert, das ich geschrieben habe, um den Preis zu erhalten und ihn in eine Datenbank zu schreiben. whod läuft seit fast einer Woche ohne Probleme.
Die App stürzt jedoch beim Start ab. Hier ist die einzige Java-Code:
import android.app.*;
import android.os.*;
import android.widget.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String price = "";
TextView tester = (TextView) findViewById(R.id.ticker);
tester.setText("new text");//This is not displayed before crash
TickerTask ticker = new TickerTask();
ticker.execute();
}
private class TickerTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... nothing) {
String coinbase = "https://api.coinbase.com/v2/prices/spot?currency=USD";
int i = 0;
int y = 0;
String price = "";
String formatted_price;
TextView ticker = (TextView) findViewById(R.id.ticker);
try {
URL url = new URL(coinbase);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
BufferedReader in = new BufferedReader (
new InputStreamReader(connection.getInputStream()));
String urlString = "";
String current;
while ((current = in.readLine()) != null) {
urlString += current;
}
int begin = urlString.indexOf("amount");
int end = urlString.indexOf("currency");
price = urlString.substring(begin+9, end-3);
ticker.setText(price);
} catch (Exception e) {
ticker.setText(e.getMessage());
}
y++;
return nothing[0];
}//End of doInBackground
}//End of TickerTask
}
zeigen Sie Ihre Stacktrace – GreyBeardedGeek
Index außerhalb der Grenzen ... 'Rückkehr nichts [0];' –
immer den Stacktrace anmelden, wenn eine Ausnahme geschieht, sonst werden Sie nie wissen, und wir können nicht helfen. – m0skit0