gpt4 book ai didi

java - 如何从 Android 的 AlertDialog 中删除 View

转载 作者:行者123 更新时间:2023-11-29 19:23:29 30 4
gpt4 key购买 nike

我正在制作一个带有自定义 EditText 字段的警报对话框。

我创建了一个 View 变量,然后将它与我的自定义 EditText 字段相关联。

requestView = inflater.inflate(R.layout.send_request,null);

然后我将该 View 添加到我的 AlertDialog

alert.setView(requestView);

然后我将 onClick 方法添加到我的按钮以执行警报对话框操作..

chatRequestbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {


alert.setPositiveButton("Send", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

request = requestMsg.getText().toString();

send();

}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();

}
});

alert.show();

}
});

它工作正常。但是当我再次按下按钮以执行警报对话框选项时,在警报对话框上按下取消选项后。

它因以下错误而崩溃。

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:4417)
at android.view.ViewGroup.addView(ViewGroup.java:4258)
at android.view.ViewGroup.addView(ViewGroup.java:4230)
at android.support.v7.app.AlertController.setupCustomContent(AlertController.java:647)
at android.support.v7.app.AlertController.setupView(AlertController.java:463)
at android.support.v7.app.AlertController.installContent(AlertController.java:226)
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257)
at android.app.Dialog.dispatchOnCreate(Dialog.java:395)
at android.app.Dialog.show(Dialog.java:294)
at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:955)
at com.buckydroid.anonchat.User$3.onClick(User.java:86)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6126)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

我虽然使 View 为空并在单击按钮时再次添加 View 将解决问题。但同样的问题一次又一次..

最佳答案

如果您想使用现有的 View ,请使用它。

alert.setOnDismissListener(new OnDismissListener(){
((ViewGroup)requestView.getParent()).removeView(requestView);
});

我将上述代码从 Kotlin 手动转换为 Java,请在使用前检查。

关于java - 如何从 Android 的 AlertDialog 中删除 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41880463/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com