Ich habe eine App, die TabLayout und Fragmente verwendet, aber meine erste Anmeldung Bildschirm ist eine Standard-Aktivität. Wenn ich auf dem Anmeldebildschirm einen Alarmdialog zeige, unterscheidet sich das Aussehen des Dialogs vollständig von dem, wenn ich einen innerhalb eines Fragments zeige.Android: AlertDialog sieht anders in Fragment
Von Anmeldebildschirm
Aus dem Inneren des Fragments
Der Code, den ich die Alertdialog zu zeigen, verwenden die folgende Klasse
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Typeface;
import android.widget.Button;
import android.widget.TextView;
class AlertDialogManager {
private AlertDialog alertDialog;
private Context mContext;
public void showAlertDialog(final Activity activity, String title, String message, Boolean status, final Boolean finishOnClose) {
// Set our context correctly based on what was passed in activity
mContext = (activity.getParent()!=null) ? mContext = activity.getParent() : activity;
// Create our alertDialog Builder
alertDialog = new AlertDialog.Builder(mContext).create();
// Setting Dialog Title
alertDialog.setTitle(title);
// Setting Dialog Message
alertDialog.setMessage(message);
// Setting alert dialog icon
if(status != null) alertDialog.setIcon((status) ? R.drawable.icon_check : R.drawable.icon_alert);
// Setting OK Button
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// if the user passed in TRUE for the finishOnClose param - we call try onBackPressed first and if that fails, call finish()
if (finishOnClose) {
try {
activity.onBackPressed();
} catch (Exception e) {
activity.finish();
}
}
}
});
// Showing Alert Message
alertDialog.show();
}
}
Um eine in einer Aktivität zu zeigen, dass ich die folgenden Befehle verwenden:
// At the top of my activity I declare
private final AlertDialogManager alertDialog = new AlertDialogManager();
// Then where I want to show one I use this
alertDialog.showAlertDialog(MyActivity.this, "Title", "Message", false, false);
man in einem Fragment Um zu zeigen, ich folgendes verwenden:
// At the top of my fragment I declare
private final AlertDialogManager alertDialog = new AlertDialogManager();
alertDialog.showAlertDialog(getActivity(), "Title", "Message", false, false);
jemand erklären kann, warum ich die 2 bekommen würde vollständig verschiedene "Themen" in meinem Dialog beim Aufruf von einer Aktivität vs Fragment? Ich bin ratlos.
danke !!!
zwei verschiedene Versionen von Android hinzuzufügen benötigt? – Blackbelt
@Blackbelt - wie kann ich das überprüfen? Ich habe die compileSdkVersion als 23, minSdkVersion als 19 und targetSdkVersion als 23 - meine build.gradle – Phil
ich meine auf dem Gerät, auf dem Sie die App laufen. Welche Version von AlertDialog verwenden Sie? 'v7.app.AlertDialog'? Überprüfen Sie Ihre Importe – Blackbelt