Android 指定子项的问题已具有父项

Android 指定子项的问题已具有父项,android,kotlin,android-alertdialog,Android,Kotlin,Android Alertdialog,我有一个带有编辑文本输入的警报对话框 fun Activity.showAlertDialogWithInput(input : EditText, @StringRes messageResId : Int, @StringRes positiveButtonMessage: Int, @StringRes negativeButtonMessage: Int, yesFunc: () -> Unit, noFunc: () -> Unit){ val alert =

我有一个带有编辑文本输入的警报对话框

 fun Activity.showAlertDialogWithInput(input : EditText, @StringRes messageResId : Int, @StringRes positiveButtonMessage: Int, @StringRes negativeButtonMessage: Int, yesFunc: () -> Unit, noFunc: () -> Unit){

    val alert = AlertDialog.Builder(this)
        .setMessage(messageResId)
        .setView(input)
        .setPositiveButton(positiveButtonMessage) { _: DialogInterface, _: Int -> yesFunc() }
        .setNegativeButton(negativeButtonMessage){ _: DialogInterface, _: Int -> noFunc()}
        .create()
    alert.show()
当我多次调用此函数时,就会出现问题,因为我得到了“指定的子对象已经有父对象”异常。 我知道我必须以某种方式删除视图,我试着这样做:

 ((ViewGroup)input.getParent()).removeView(input); // <- fix

“问题发生了”。您需要显示logcat,以便我们可以看到问题所在。这似乎是一个非常常见的错误,因此stacktrace可能会显示缺少的内容。我添加了编辑OK,那么您实际在哪里充气/提供编辑文本呢?我看不出发生了什么让你写“视图组演员阵容不工作”
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ro.quik, PID: 26986
    io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
        at io.reactivex.internal.util.HalfSerializer.onNext(HalfSerializer.java:107)
        at io.reactivex.internal.operators.observable.ObservableTakeUntil$TakeUntilMainObserver.onNext(ObservableTakeUntil.java:79)
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:201)
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255)
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
        at android.os.Handler.handleCallback(Handler.java:888)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8147)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
     Caused by: 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:5168)
        at android.view.ViewGroup.addView(ViewGroup.java:4997)
        at android.view.ViewGroup.addView(ViewGroup.java:4969)
        at com.android.internal.app.AlertController.setupCustomContent(AlertController.java:647)
        at com.android.internal.app.AlertController.setupView(AlertController.java:541)
        at com.android.internal.app.AlertController.installContent(AlertController.java:272)
        at android.app.AlertDialog.onCreate(AlertDialog.java:446)
        at android.app.Dialog.dispatchOnCreate(Dialog.java:579)
        at android.app.Dialog.show(Dialog.java:397)
        at ro.quik.ui.extensions.ActivityExtensionsKt.showAlertDialogWithInput(ActivityExtensions.kt:102)
        at ro.quik.ui.features.scan.BarcodeReaderActivity$onStart$2.accept(BarcodeReaderActivity.kt:77)
        at ro.quik.ui.features.scan.BarcodeReaderActivity$onStart$2.accept(BarcodeReaderActivity.kt:26)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
        at io.reactivex.internal.util.HalfSerializer.onNext(HalfSerializer.java:107) 
        at io.reactivex.internal.operators.observable.ObservableTakeUntil$TakeUntilMainObserver.onNext(ObservableTakeUntil.java:79) 
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:201) 
        at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255) 
        at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124) 
        at android.os.Handler.handleCallback(Handler.java:888) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:213) 
        at android.app.ActivityThread.main(ActivityThread.java:8147) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)