Ich verwende OKHttp: https://github.com/square/okhttp/wiki/Recipes Bibliothek eine Anfrage für mein Android-Anwendung zu tun, und ich bin mit einem Dialogfeld Bibliothek anzuzeigen: https://github.com/afollestad/material-dialogsAndroid Absturz, wenn Dialogfelder mit
Hier ist ein simplify Code mein Problem zu erklären, :
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
post(SERVER_ADDRESS + "/login", userEmail, userPassword, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseUserConnected = response.body().string();
if (/*user not find error*/) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Helper.loginError(LoginActivity.this); // CRASH HERE
mLoginButton.setEnabled(true);
mSignUpButton.setEnabled(true);
}
}
}
}
}
});
} catch (IOException mE) {
mE.printStackTrace();
}
}
});
Und hier ist der Code für meine DialogBox Methode:
public static void loginError(Context context){
new AlertDialogWrapper.Builder(context)
.setCancelable(false)
.setTitle(R.string.login_error_title)
.setMessage(R.string.login_error_message)
.setPositiveButton(R.string.login_error_ok_button_text, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
Dieses adaequat im Allgemeinen, aber ich fand, dass, wenn ich die aktuelle Aktivität hier pausieren, es LoginActivity ist, oder wenn ich eine andere App während der Anfrage öffne, wenn die Anwendung das Dialogfeld anzeigen möchte, die Anwendung stoppt und abstürzt, nehme ich an, es ist, weil es ' Ich finde die aktuelle Aktivität, um meine DialogBox zu erstellen. Ich habe diesen Fehler:
Fatal Exception: android.view.ViewRootImpl $ CalledFromWrongThreadException: Nur die ursprünglichen Thread, der eine Ansichtshierarchie erstellt wurden, können ihren Standpunkt berühren.
ich zu verwenden versuchen, getApplication()
, getApplicationContext()
, getBaseContext()
Methoden, aber es hat mir gezeigt, diese Nachricht:
Fatal Exception: com.afollestad.materialdialogs.MaterialDialog $ DialogException: Bad Fenster Token, Sie können keinen Dialog anzeigen, bevor eine Aktivität erstellt wurde oder nachdem sie ausgeblendet wurde.
Wie kann ich diese Abstürze verhindern oder beheben?
Dank für Ihre Antwort verwenden, in dem Link sah ich eine Menge XML, aber wie kann ich Aktionen mit Schaltflächen hier implementieren? – fandro
Denken Sie über die Weitergabe von Daten zwischen Aktivitäten wie Intents, onActivityResult –
OK danke ich werde das versuchen – fandro