AlertDialog Eigenschaften existiert nicht mehr.

wer112

Top Contributor
Ich habe mein Dialog aus mein App Store rauskopiert und habe es an der Richtigen stelle wieder hinzugefügt.
Da wurde von den AlertDialog Eigenschaften rot makiert. musste leider meine comSDK hochstellen.
Dann habe ich den kompletten Code 1:1 kopiert und eingefügt, um Fehler zu vermeiden.

das ist ja mein Dialog, der im App Store perfekt funktioniert:

Java:
 AlertDialog.Builder builder = new AlertDialog.Builder(Registrieren.this, R.style.AlertDialogTheme);
                View view = LayoutInflater.from(Registrieren.this).inflate(R.layout.layout_error_dialog, (ConstraintLayout)findViewById(R.id.layoutDialogContainer));
                builder.setView(view);
                ((TextView)view.findViewById(R.id.textTitle)).setText("VolleyError");
                ((TextView)view.findViewById(R.id.textView_error)).setText("ERROR: " + error);
                ((Button)view.findViewById(R.id.buttonAction)).setText(getString(R.string.okay));
                ((ImageView)view.findViewById(R.id.image_error)).setImageResource(R.drawable.ic_error);

                final AlertDialog alertDialog = builder.create();

                view.findViewById(R.id.buttonAction).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        alertDialog.dismiss();

                    }
                });

                if (alertDialog.getWindow() != null){
                    alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
                }



                alertDialog.show();

leider wird in einem anderen Projekt diese Elemente rot und weiß nicht wiso:

.show();
.getWindow();


Werden diese zwei Elemente nicht mehr supported? Bitte nixs am Aussehen ändern, nur wiso das jetzt nicht mehr klappt.
Liegt es an der comSDK Version?

Danke für erue Hilfe
 

alert hat kein getWindow, außerdem soll deine IDE dir das sowieso sagen was falsch ist..
javafx 18 hat auch kein get window
 
Zuletzt bearbeitet von einem Moderator:
Die beiden Methoden gibt es auch noch in API 33

AlertDialog erbt von Dialog dort git es sie.
@yfons123 es geht hier um Android nicht Swing oder JavaFX



Was genau wird rot?

"Registrieren.this" ist nicht der richtige Context in einen Faragment.
In der Activity ist das so möglich in einem Fragment nicht.
 
Zuletzt bearbeitet:
R.id.textTitle ist sicherlich in dem Layout vom Fragment und nicht in dem von dem Dialog.


Wie ich dir schon im anderen Thread sagte benutze für das laden einen anderen Bezeichner nicht view.

Das ist die Übergabe Variable von
onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
sollte nicht verändert werden.
Also eine neue erstellen mit anderen Namen.

So in etwa sollte die Methode aus dem anderen Thread aussehen.

Java:
private void ----(View view){

        String url = "----";

        RequestQueue queue = Volley.newRequestQueue(context);

        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                Log.e("Response Entwickler: ", response);
                Toast.makeText(context, "Response: " + response, Toast.LENGTH_SHORT).show();

                if (response.equals("Session Fehler.")){
                    AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext(), R.style.AlertDialogTheme);
                    View viewAd = LayoutInflater.from(getActivity()).inflate(R.layout.layout_error_dialog, (ConstraintLayout)getActivity().findViewById(R.id.layoutDialogContainer));
                    builder.setView(viewAd);
                    ((TextView) view.findViewById(R.id.textTitle)).setText("Fehler");
                    ((TextView) view.findViewById(R.id.textView_error)).setText(response);
                    ((Button) view.findViewById(R.id.buttonAction)).setText(getString(R.string.okay));
                    ((ImageView) view.findViewById(R.id.image_error)).setImageResource(R.drawable.ic_error);

                    final AlertDialog alertDialog = builder.create();
 
Die beiden Methoden gibt es auch noch in API 33

AlertDialog erbt von Dialog dort git es sie.
@yfons123 es geht hier um Android nicht Swing oder JavaFX



Was genau wird rot?
Wie beschrieben, wird alertdialog.show(); rot, sowie alertdialog.getWindow(); rot. Habe im Handbuch nach geschaut, ob das veraltet ist, aber wie es aussieht ist es noch gültig. Irgendwie werden auch das Param Zeug rot, aber da schaue ich mal, da vorhin es noch net war, wvtl. jedem dem Essen auf der Tastatur xD
"Registrieren.this" ist nicht der richtige Context in einen Faragment.
Das ist noch im normale Classe. Also Erst kommt der Ladebildschirm, dann Login bzw. Registrierung bzw. Passwort zurücksetzen, die sind noch normal. Wenn man eigelogt ist, kommt man zur Steuerung, was auch noch ne normale Klasse ist...
In der Activity ist das so möglich in einem Fragment nicht.
Im App Store ging der Code überall, auch in den Fragmente.
musste leider die compileSdkVersion 32 setzen. Im App Store war traget und comSDK beide auf 30, aber dies geht in dem schnell Projekt net. Beswegen stand in SOF das man es hochsetzen muss.
 
Wie ich dir schon im anderen Thread sagte benutze für das laden einen anderen Bezeichner nicht view.
Hat ja nicht funktioniert, da das view für den LayoutInflater sonst rot erscheint, und ich brauche ja den ganzen Teil vom Inflater, damit beim Coustom Dialog exsistieren kann. Und auch die Elemente drauf zugreifen kann.
Im Handbuch wurde das Anstatt show irgendwie mit return ausgegeben, aber das Problem habe ich ja in alle Apps noch nie gehabt, das was mit dem Dialog net stimmte.

Ich werde das mit dem Appstore testen und in diesem Code testen...
Also diesen Code von dir....
Mir geht es ja darum, das Simple .show() rot erscheint ect. und auch nicht mehr im Auswahl Feld steht...
 
"Registrieren" ist doch eine Klasse und was ist das eine Activity oder ein Fragment?

In einer Activity kannst du dir den Context mit "Registrieren.this" holen wenn du auch in der Activity bist.
Im Fragment wird da deine IDE einen Fehler anzeigen.
Und wenn die Variable "builder" schon einen Fehler hat gibt dir die IDE auch Fehler wenn du Methoden aus ihr aufrufen willst.
 
"Registrieren" ist doch eine Klasse und was ist das eine Activity oder ein Fragment?
Es ist eine Activity. Bei der Login Activity klappt das mit .show() usw. Und im App Store und in den anderen Projekten funktioniert auch in den Fragmente.
In einer Activity kannst du dir den Context mit "Registrieren.this" holen wenn du auch in der Activity bist.
Im Fragment wird da deine IDE einen Fehler anzeigen.
habe da immer getActivity() genommen und das ging..
 
Mit dem new OnKlicklistener stimmt ja auch was nicht.
Mache doch erstmal ein Clear Projekt und Rebuild Projekt. Lösche auch mal den Gradle Cache.
 
Mit dem new OnKlicklistener stimmt ja auch was nicht.
Mache doch erstmal ein Clear Projekt und Rebuild Projekt. Lösche auch mal den Gradle Cache.
Hatte ich ja gemacht, hat ja nixs gebracht.
Hast du auch den richtigen import eingebunden?
Ja da war ein Fehler, hat auch mit Fehler compililert. Beim App Store hat den Fehler nicht angezeigt, evt. jedem den niedrigen comSDK.
Hatte im App Store androidx.app...Dialog.

Habe im jetzigen klein Projekt, mal geschaut, warum das bei Login nicht rot makiert wurden war.
Dort stand nähmlich android.app...Dialog

es lag am x, KEin Plan was androidx ist....

Jetzt funktioniert es wieder 👍👍👍
 

Zurück
Oben