Listener wird nicht initialisiert

  • Antworten:5
  • Bentwortet
Robbiani Renato
  • Forum-Beiträge: 609

04.08.2021, 20:05:01 via Website

Hallo zusammen

Ich möchte aus einem Fragment heraus ein Dialogfragment aufrufen.

package ch.robbisoft.klassennotfall

import android.app.AlertDialog
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
import android.os.Bundle
import androidx.fragment.app.DialogFragment

class DialogFrag : DialogFragment() {

private lateinit var horcher :DialogInterface.OnClickListener

override fun onAttach(context: Context) {
    super.onAttach(context)
    if (context is DialogInterface.OnClickListener){
        horcher = context
    }
}

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val dialog = AlertDialog.Builder(requireContext())
    dialog.setTitle(R.string.dia_titel)
    dialog.setMessage(R.string.dia_meldung)
    dialog.setCancelable(false)
    dialog.setPositiveButton(R.string.dia_ja, horcher)
    dialog.setNegativeButton(R.string.dai_nein, horcher)
    return dialog.create()
}

companion object{
    val TAG = DialogFrag::class.simpleName
}

}

Wenn ich den Dialog mit

frage = DialogFrag()
        frage.show(getParentFragmentManager(), DialogFrag.TAG)

Aufrufe, stürzt die App ab mit der Meldung, dass der horcher nicht initialisiert wurde.

lateinit property horcher has not been initialized

Ich bin mir nicht ganz sicher, aber könnte es am context liegen, weil ich den Dialog aus einem Fragment aufrufe?
Falls ja was müsste ich ändern damit es geht?

Gruss Renato

Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.530

07.08.2021, 15:40:45 via Website

schaue mal hier
https://developer.android.com/guide/fragments/dialogs#kotlin

das
private lateinit var horcher :DialogInterface.OnClickListener
geht nicht ist weder eine Fuktion noch eine Lambda Expression

— geändert am 07.08.2021, 16:17:32

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

05.08.2021, 06:49:34 via Website

Das mit dem Fragment Manager wird nicht stimmen.

Wenn du in einen Fragment bist musst du glaube getChildFragmentManager benutzen.

— geändert am 05.08.2021, 06:57:06

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

06.08.2021, 20:15:31 via Website

Ciao Jokel

Mag sein, aber das Problem mit dem Listener lässt sich damit nicht lösen.

Gruss Renato

Hilfreich?
Kommentieren
Michael W
  • Forum-Beiträge: 3

07.08.2021, 13:19:26 via Website

Hallo Renato,
in Kotlin kann ich es dir nicht sagen....bin auf java.
Probier doch erstmal den Dialog ohne den Listener aufzurufen. Geht das denn?
Noch dazu fehlen mir bei deinen beiden Buttons auch die Listener...aber eins nach dem anderen...
Gruß
Michael

Hilfreich?
Kommentieren
Beste Antwort
Jokel
  • Forum-Beiträge: 1.530

07.08.2021, 15:40:45 via Website

schaue mal hier
https://developer.android.com/guide/fragments/dialogs#kotlin

das
private lateinit var horcher :DialogInterface.OnClickListener
geht nicht ist weder eine Fuktion noch eine Lambda Expression

— geändert am 07.08.2021, 16:17:32

Hilfreich?
Kommentieren
Robbiani Renato
  • Forum-Beiträge: 609

09.08.2021, 20:31:36 via Website

Ciao Jokel

Genau so geht es. Danke für die Hilfe.

Gruss Renato

Hilfreich?
Kommentieren