Olá galera, ao adicionar um segunda transação o erro abaixo acontece, tentei eu mesmo resolver, mas não achei a solução, é como se o dialog de adicionar receita já existisse na segunda chamada, gerando o erro
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.gilmardeveloper.financask, PID: 17462
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4915)
at android.view.ViewGroup.addView(ViewGroup.java:4746)
at android.view.ViewGroup.addView(ViewGroup.java:4718)
at android.support.v7.app.AlertController.setupCustomContent(AlertController.java:646)
at android.support.v7.app.AlertController.setupView(AlertController.java:464)
at android.support.v7.app.AlertController.installContent(AlertController.java:227)
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:260)
at android.app.Dialog.dispatchOnCreate(Dialog.java:403)
at android.app.Dialog.show(Dialog.java:302)
at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:958)
at com.gilmardeveloper.financask.ui.activity.ListaTransacoesActivity$onCreate$2.onClick(ListaTransacoesActivity.kt:90)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_lista_transacoes)
displayResumo()
displayLista()
val view = window.decorView
val viewCriada = LayoutInflater.from(this).inflate(R.layout.form_transacao, view as ViewGroup, false)
// restante do código ...
val adapter = ArrayAdapter.createFromResource(this, R.array.categorias_de_receita, android.R.layout.simple_spinner_dropdown_item)
viewCriada.form_transacao_categoria.adapter = adapter
lista_transacoes_adiciona_receita.setOnClickListener {
AlertDialog.Builder(this)
.setTitle(R.string.adiciona_receita)
.setView(viewCriada)
.setPositiveButton("Adicionar", DialogInterface.OnClickListener { dialogInterface, i ->
val valorEmTexto = viewCriada
.form_transacao_valor.text.toString()
val dataEmTexto = viewCriada
.form_transacao_data.text.toString()
val categoriaEmTexto = viewCriada
.form_transacao_categoria.selectedItem.toString()
val valor = BigDecimal(valorEmTexto)
val formatoBrasileiro = SimpleDateFormat("dd/MM/yyyy")
val dataConvertida: Date = formatoBrasileiro.parse(dataEmTexto)
val data = Calendar.getInstance()
data.time = dataConvertida
val transacaoCriada = Transacao(tipo = Tipo.RECEITAS,
valor = valor,
data = data,
categoria = categoriaEmTexto)
transacoes.add(transacaoCriada)
displayLista()
displayResumo()
lista_transacoes_adiciona_menu.close(true)
})
.setNegativeButton("Cancelar", null)
.show()
}
}