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
 
Y

yfons123

Gast

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:

Jw456

Top Contributor
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:

Jw456

Top Contributor
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();
 

wer112

Top Contributor
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.
 

wer112

Top Contributor
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...
 

Jw456

Top Contributor
"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.
 

wer112

Top Contributor
"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..
 

wer112

Top Contributor
Dann zeige doch mal Bilder wo es rot ist und nicht geht.
Bei der Regsistrierungsactivity:

20221223_062534(1).jpg

Bei dem Login Activity, ist das da nicht rot, auch nicht in mein App Store auf der Resgistrierseite, dafunktioniert es problemlos und jede weitere App. Und die Registrierung ist auch komplett kopiert wurden und dann angepasst....
 

Jw456

Top Contributor
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.
 

wer112

Top Contributor
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 👍👍👍
 

Neue Themen


Oben