- Forum-Beiträge: 609
02.08.2021, 18:23:11 via Website
02.08.2021 18:23:11 via Website
Hallo zusammen
Ich möchte in einem Fragment ein Dialog aufrufen welcher ich in einem DialogFragment erstelle. Beim Aufruf des Dialogs bleibt aber das ganze hängen da er den "supportFragmentManager" nicht kennen will.
frage = DialogFrag()
frage.show(supportFragmentManager, DialogFrag.TAG)
Was muss ich in meinem Fragment ändern damit der Dialog angezeigt wird?
Fragment:
package ch.robbisoft.klassennotfall
import android.content.DialogInterface
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import android.widget.Toast
private val TAG = FragKlasseA::class.simpleName
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private const val ARG_PARAM1 = "param1"
private const val ARG_PARAM2 = "param2"
/**
* A simple [Fragment] subclass.
* Use the [FragKlasseA.newInstance] factory method to
* create an instance of this fragment.
*/
class FragKlasseA : Fragment() {
// TODO: Rename and change types of parameters
private var param1: String? = null
private var param2: String? = null
private lateinit var frage : DialogFrag
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
var view = inflater.inflate(R.layout.frag_klasse_a, container, false)
var arr_name = arrayOf("AName1", "AName2", "AName3", "AName4")
val adap_name = ArrayAdapter(requireContext(), R.layout.list_item, arr_name)
val obj_name = view.findViewById<ListView>(R.id.liste_aname)
obj_name.adapter = adap_name
var arr_mutter = arrayOf("03197400", "07938883", "03131125", "????????")
val adap_mutter = ArrayAdapter(requireContext(), R.layout.list_item, arr_mutter)
val obj_mutter = view.findViewById<ListView>(R.id.liste_amutter)
obj_mutter.adapter = adap_mutter
obj_mutter.setOnItemClickListener { parent, view, position, id ->
val text = obj_mutter.getItemAtPosition(position).toString()
Toast.makeText(context, text, Toast.LENGTH_LONG).show()
frage = DialogFrag()
frage.show(supportFragmentManager, DialogFrag.TAG)//Fehler!!!!
}
var arr_vater = arrayOf("07922546", "07933883", "09174369", "??????")
val adap_vater = ArrayAdapter(requireContext(), R.layout.list_item, arr_vater)
val obj_vater = view.findViewById<ListView>(R.id.liste_avater)
obj_vater.adapter = adap_vater
obj_vater.setOnItemClickListener { parent, view, position, id ->
val text = obj_vater.getItemAtPosition(position).toString()
Toast.makeText(context, text, Toast.LENGTH_LONG).show()
}
var arr_allg = arrayOf("@@@@@@@@@", "@@@@@@@@@", "@@@@@@@@@", "@@@@@@@@@")
val adap_allg = ArrayAdapter(requireContext(), R.layout.list_item, arr_allg)
val obj_allg = view.findViewById<ListView>(R.id.liste_aallg)
obj_allg.adapter = adap_allg
obj_allg.setOnItemClickListener { parent, view, position, id ->
val text = obj_allg.getItemAtPosition(position).toString()
Toast.makeText(context, text, Toast.LENGTH_LONG).show()
}
return view
}
companion object {
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment FragKlasseA.
*/
// TODO: Rename and change types and number of parameters
@JvmStatic
fun newInstance(param1: String, param2: String) =
FragKlasseA().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)
}
}
}
}
Dialog Fragment:
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 ialogInterface.OnClickListener
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is DialogInterface.OnClickListener){
horcher = context
}
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return super.onCreateDialog(savedInstanceState)
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
}
}
Gruss Renato
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.