当前位置: 首页 > 知识库问答 >
问题:

Android对话框错误指定的孩子已经有一个父级。您必须先在孩子的父级上调用远程视图()

汪翰墨
2023-03-14

我正在尝试将数据提供给我的listView,单击FAB时,它会显示一个对话框,其中包含一个editText和两个按钮。在第一次,它允许我向ListView提供数据。但是当我第二次尝试时,它会显示错误:

FATAL EXCEPTION: main
Process:com.example.app.wounderlist.wounderlist.HomeFragment, PID: 3790
1.onClick:指定的子节点已经有了父节点。您必须首先在子节点的父节点上调用远程视图()。在HomeFragment.java:79(android.view.View.performClick)View.java:4444(android.view.View)PerformClick.run(View.java:18457)android.os.Handler.handleCallback(Handler.java:733)android.os.Handler.dispatchMessage(Handler.java:95)android.os.Looper.loop(AlertController.java:226)android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257)android.app.Dialog.dispatchOnCreate(Dialog.java:361)android.app.Dialog.show(Dialog.java:262)com.example.app.wounderlist.wounderlistjava.lang.IllegalStateException(android.view.ViewGroup.addViewInner)ViewGroup.java:3562(android.view.ViewGroup.addView)ViewGroup.java:3415android.view.ViewGroup.addView(ViewGroup.java:3391)android.support.v7.app.AlertController.setupCustomContent(AlertController.java:647)android.support.v7.app.AlertController.setupView(AlertController.java:463)android.support.v7.app.AlertController.installContent(Loper. java: 136)android. app. ActivityThread. main(ActivityThread. java: 5113)在java. lang.反射。方法。

//create a dialog box with a editText and a Add button when pressing the #FAB
        final EditText taskEditText = new EditText(getActivity());
        mFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog dialog = new AlertDialog.Builder(getActivity())
                        .setTitle("Add a new task")
                        .setMessage("What do you want to do next?")
                        .setView(taskEditText)
                        .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                //for getting text from the editText
                                String itemText = taskEditText.getText().toString();
                                mItemsAdapter.add(itemText);


                            }
                        })
                        .setNegativeButton("Cancel", null)
                        .create();
                dialog.show();
            }
        });

共有2个答案

薛英卫
2023-03-14
final EditText taskEditText = new EditText(getActivity());
        AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
        builder1.setMessage("What do you want to do next?");

        //I add this extra code to get the EditText
        builder1.setView(taskEditText);
        builder1.setCancelable(true);

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

                //for getting text from the editText
                String itemText = taskEditText.getText().toString();
                mItemsAdapter.add(itemText);

                //And I also add this code to clear the editText
                taskEditText.setText("");

            }
        });

        builder1.setNegativeButton(
                "Cancel", null);

        final AlertDialog alert11 = builder1.create();

        mFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                alert11.show();
            }
        });

快乐编码!!

淳于升
2023-03-14

每次单击按钮,您都会创建警报对话框的新实例。在<code>OnClickListener

试试这个:

 final EditText taskEditText = new EditText(getActivity());
AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
builder1.setMessage("What do you want to do next?");
builder1.setCancelable(true);

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

                                //for getting text from the editText
                                String itemText = taskEditText.getText().toString();
                                mItemsAdapter.add(itemText);

                            }
                        });

builder1.setNegativeButton(
   "Cancel", null);

AlertDialog alert11 = builder1.create();

 mFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               alert11.show();
            }
        });

 类似资料:
  • 我必须经常在两种布局之间切换。错误发生在下面发布的布局中。 第一次调用我的布局时,没有发生任何错误,一切正常。然后,当我调用另一个布局(空白布局)并再次调用我的布局时,它抛出以下错误: 我的布局代码如下所示: 我知道以前有人问过这个问题,但对我来说没有帮助。

  • 问题内容: 在我的应用中,我必须经常在两种布局之间切换。错误在下面发布的布局中发生。 第一次调用布局时,没有发生任何错误,一切都很好。然后,当我调用不同的布局(空白),然后再次调用我的布局时,出现以下错误: 我的布局代码如下所示: 我知道之前曾有人问过这个问题,但对我来说没有帮助。 问题答案: 错误消息说明你应该做什么。

  • 有人能帮我吗?我不知道为什么我会犯这个错误。

  • 我试图做一个问答应用程序,在那里你点击加号按钮来添加一个问答。屏幕上弹出一个按钮,你可以点击它来播放或编辑测验。当我点击新创建的按钮一次很好,但第二次点击它时,应用程序崩溃了。有人知道我如何专门修复这个错误吗? 2020-12-28 13:48:47.521 266 48-26648/com.example.k_ari E/AndroidRuntime:致命异常:main process:com.

  • 问题内容: 我有一个带有分层数据的表,其结构如下所示: 如果我传递节点ID,则希望通过在SQL中遍历其所有父节点来获得最高的节点ID /细节。 我尝试过CTE,但我无法以某种方式获得正确的组合。但是,我将此功能用作函数,但是它太慢了,以至于我不得不发布这个问题。 在上面的示例中,如果我通过6,则我想拥有最高的即1。通过遍历6 => 5 => 3 => 2 => [1](结果) 在此先感谢您的帮助。

  • 我一直在将代码从JIT转换到D3,并使用树布局。我已从中复制了代码http://mbostock.github.com/d3/talk/20111018/tree.html使用我的树数据,但我想做更多。 在我的例子中,我想创建子节点,这些子节点合并回一个较低级别的父节点,我意识到这更像是一个有向图结构,但是希望树能够适应这一点(即注意子节点之间的公共id应该合并)。 因此,基本上,一棵树在从父母到