Grundsätzlich verwende ich AsyncTask eine progressBar
zu zeigen, und nach dem progress
ist 10
, sollte es ein Verfahren ausgeführt werden, die in MainActivity
befindet. Wenn die progressBar
10/10
ist, führt dies zu einem Absturz beim folgenden Fehler.OnPostExecute nicht Intent öffnen
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
MapProgressTask
@Override
protected void onPostExecute(String result) {
textView.setText(result);
button.setEnabled(true);
progressDialog.hide();
MainActivity mainActivity = new MainActivity();
mainActivity.getGooglePlace();
}
MainActivity
protected void getGooglePlace()
{
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
Intent intent;
try {
intent = builder.build(MainActivity.this);
startActivityForResult(intent, place_picker_request);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
Können Sie mir sagen, wie kann ich diese Methode ausgeführt werden, wenn die progressBar
voll ist, bitte? Vielen Dank!
MainActivity mainActivity = neu MainActivity() ;? Was versuchst du zu machen? – Vardan95
Versuchen Sie niemals, Ihre Aktivität instanziieren, um eine Methode innerhalb dieser Aktivität auszuführen. Erstellen Sie diese Methode in einer öffentlichen getrennten Klasse .... – Opiatefuchs
** Erstellen Sie nie eine Instanz einer Aktivität selbst. Löschen Sie zuerst diese Zeilen: 'MainActivity mainActivity = new MainActivity(); mainActivity.getGooglePlace(); '. Entscheiden Sie sich dann für einen besseren Plan zum Starten dieser anderen Aktivität (z. B. "statische" Methode, die einen "Kontext" als einen Parameter verwendet). Berücksichtigen Sie die Möglichkeit von Konfigurationsänderungen, während Ihre AsyncTask ausgeführt wird (z. B. wenn der Benutzer den Bildschirm dreht). – CommonsWare