指定的子项已经有父项。您必须首先对孩子的父母调用removeView()

2023-12-28

我正在做一个关于输入你的名字的应用程序的小练习,它返回“你好(你输入的名字)”。但是在我按下按钮后,我收到错误“指定的子项已经有父项。您必须首先在子项的父项上调用removeView()”

MainActivity.java

package com.example.holaamigos;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.*;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
    public final static String EXTRA_SALUDO = "com.example.holaamigos.SALUDO";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        final EditText txtNombre = (EditText)findViewById(R.id.TxtNombre);
        final Button btnHola = (Button)findViewById(R.id.BtnHola);
            
            btnHola.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this, ActivitySaludo.class);
                    String saludo = txtNombre.getText().toString();
                    intent.putExtra(EXTRA_SALUDO, saludo);
                    startActivity(intent);
        }
                
    });
            
    }
                    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

ActivitySaludo.java

package com.example.holaamigos;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class ActivitySaludo extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_saludo);
        
        Intent intent = getIntent();
        String saludo = intent.getStringExtra(MainActivity.EXTRA_SALUDO);
        
        //TextView txt = new TextView(this);
        //txt.setText(20);
        //txt.setText(saludo);
        
        TextView txtCambiado = (TextView) findViewById(R.id.TxtSaludo);
        txtCambiado.setText(saludo);
        setContentView(txtCambiado);
    }

}

活动_saludo.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView 
        android:id="@+id/TxtSaludo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />
    

</LinearLayout>

活动主文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/LblNombre"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/nombre" />
    
    <EditText
        android:id="@+id/TxtNombre"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text" />
    
    <Button 
        android:id="@+id/BtnHola"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hola_apy"
        android:onClick="enviarSaludo"/>

</LinearLayout>

LogCat

10-10 16:12:18.470: D/AndroidRuntime(810): Shutting down VM
10-10 16:12:18.470: W/dalvikvm(810): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
10-10 16:12:18.586: E/AndroidRuntime(810): FATAL EXCEPTION: main
10-10 16:12:18.586: E/AndroidRuntime(810): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.holaamigos/com.example.holaamigos.ActivitySaludo}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.os.Looper.loop(Looper.java:137)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.ActivityThread.main(ActivityThread.java:5041)
10-10 16:12:18.586: E/AndroidRuntime(810):  at java.lang.reflect.Method.invokeNative(Native Method)
10-10 16:12:18.586: E/AndroidRuntime(810):  at java.lang.reflect.Method.invoke(Method.java:511)
10-10 16:12:18.586: E/AndroidRuntime(810):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-10 16:12:18.586: E/AndroidRuntime(810):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-10 16:12:18.586: E/AndroidRuntime(810):  at dalvik.system.NativeStart.main(Native Method)
10-10 16:12:18.586: E/AndroidRuntime(810): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.view.ViewGroup.addViewInner(ViewGroup.java:3339)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.view.ViewGroup.addView(ViewGroup.java:3210)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.view.ViewGroup.addView(ViewGroup.java:3186)
10-10 16:12:18.586: E/AndroidRuntime(810):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:289)
10-10 16:12:18.586: E/AndroidRuntime(810):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:279)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.Activity.setContentView(Activity.java:1901)
10-10 16:12:18.586: E/AndroidRuntime(810):  at com.example.holaamigos.ActivitySaludo.onCreate(ActivitySaludo.java:25)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.Activity.performCreate(Activity.java:5104)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
10-10 16:12:18.586: E/AndroidRuntime(810):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
10-10 16:12:18.586: E/AndroidRuntime(810):  ... 11 more
10-10 16:12:18.856: D/dalvikvm(810): GC_CONCURRENT freed 134K, 10% free 2630K/2908K, paused 73ms+83ms, total 237ms

每当我在扩展片段中的视图时省略参数时,就会遇到此错误onCreateView()像这样的方法:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragment_reject, container);
    return view;
}

解决方案是将视图通胀线更改为:

View view=inflater.inflate(R.layout.fragment_reject, container,false);

解释可以在Android 片段指南 http://developer.android.com/guide/components/fragments.html

引用指南,视图初始化语句中的最终参数为 false,因为:

“系统已经将膨胀的布局插入到容器中 - 传递 true 会在最终布局中创建冗余视图组”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指定的子项已经有父项。您必须首先对孩子的父母调用removeView() 的相关文章

随机推荐

  • 我需要在单击后退按钮时最小化 Android 应用程序

    我需要在按下后退按钮时最小化应用程序 我使用以下代码来捕获硬件后退按钮单击事件 帮助我最小化按后退键的代码 Override public boolean onKeyDown int keyCode keyEvent event switc
  • 数据实体 > 领域对象 > ViewModel,每个都有截然不同的数据结构

    这是关于数据实体 域对象和 ViewModel 之间映射的一般问题 我可能问得不对 但希望我能理解它 下面是一个简化的问题 假设我有一个实体框架模型 它 1 1 映射到我的数据库表 但我的域对象可能不相同 并且我的 ViewModel 又完
  • 与“LPCWSTR”类型的参数不兼容

    include stdafx h include
  • 在程序的某些部分显式禁用 MySQL 查询缓存

    在 Django 项目中 一些 cronjob 程序主要用于管理或分析目的 例如生成网站使用统计数据 轮换用户活动日志等 我们可能不希望MySQL在这些程序中缓存查询以节省内存使用并提高查询缓存效率 是否可以在这些程序中显式关闭 MySQL
  • 为什么我的 HTML 文本框在移动设备和桌面上的显示效果不一样?

    由于某种原因 我的 HTML 文本框没有居中 当我在桌面和移动设备上查看它们时 它们的显示方式有所不同 一个被拉伸 而另一个未居中 我可以让我的 HTML 代码在中显示相同吗 两种情况 div div h1 style text align
  • onload 和 Jquery read()。它们适用于任何 DOM 吗?比如table或者div?

    我需要使用 javascript 脚本将动态内容放在 div 上 该 div 位于页面顶部 因此它会先加载 然后再加载其下方的其他内容 而且下面真的有很多东西 因此 当我将脚本放在ready 或onload上时 div将空2 3秒 同时显示
  • 使用 jQuery 删除表格行

    以下是我的代码 Script document ready function click click function table append tr td nbsp td tr remove click function table re
  • 在同一个 Docker Hub 存储库中进行链式自动构建

    由于构建时间限制 https stackoverflow com a 34588866 865719在 Docker Hub 上 我决定拆分Dockerfile将耗时的自动构建分为三个文件 每一个 子构建 都会在 Docker Hub 的时
  • 为什么 sem_open 与 fork() 一起使用而不使用共享内存?

    即使信号量不在共享内存中 该程序也可以工作 我测试过 请注意我如何在 fork 之前创建一次变量 另一方面 用创建的信号量sem init 需要在共享内存中才能工作 但这仍然是一个sem t结构 那么为什么它不需要共享内存呢 的内容是sem
  • 如何删除字符串中除点和逗号之外的所有特殊字符

    我有一个包含许多特殊字符和文本的句子 我想删除除点和逗号之外的所有特殊字符 例如 这就是 u HI Jhon how are you 我正在尝试生成以下字符串 HI Jhon how are you 我试过这个 u HI Jhon how
  • Swagger/OpenAPI 多重安全要求和副作用?

    我正在为 Swagger OpenAPI 实现一个代码生成器 但是 我在实现安全要求时遇到了问题 这些要求被定义为对象列表 列表成员是替代 或 对象成员是与 例如 a b c d 这应该导致 a b 光盘 然而 在实现这一点时 我遇到了实际
  • .Net 中是否有与 java.util.concurrent.Executor 等效的程序?

    拥有一组长期运行的离散任务 从文本文件中解析数十 数千行 合并为对象 操作和持久化 如果我在 Java 中实现这一点 我想我可能会为文件中的每一行或每 X 行 即块 的任务添加一个新任务到执行器 对于我正在使用的 Net 我不太确定 我怀疑
  • Xcode iOS 框架图标含义

    当使用 Xcode 7 3 将 iOS 框架添加到 iOS 项目时 常规 gt 链接的框架和库 Xcode 使用两个不同的图标来表示 iOS 框架 一个看起来像一个白色立方体 另一个看起来像一个工具箱 这些图标分别代表什么意思 工具箱图标代
  • 信号 fft 的幅度错误

    我正在尝试计算使用 Python 进行快速傅立叶变换 我正在使用函数 fft fft 并将其应用于简单的正弦信号 这是我的代码 import numpy as np import matplotlib pyplot as plt frame
  • 在分块矩阵中查找一个值

    我写了一个稀疏矩阵类 基于Block压缩存储 我写了几乎所有的方法 但我不知道如何写方法findValue i j 给出原始矩阵的 2 个索引 存储由四个向量组成 ba 按从上到下左右顺序存储矩阵的非零块 几乎有一个元素不为零的矩形块 an
  • 如何让 mod_rewrite 只匹配一次规则

    我有以下网址 http localhost http mygarble com foundationsofwebprogramming 86 http localhost http mygarble com foundationsofweb
  • Excel公式最小值的位置

    编辑 可能是一个简单的问题 基本上我有三个值 比如说不同单元格中的 9 4 和 7 不在表中 我想找到订单中的最小值 然后返回其相对位置 例如 9 4 7 将返回 2 因为 4 是最小值并且位于第二位 正确的Excel公式是什么 谢谢 解决
  • 使用Scala对象作为key的reduceByKey

    我正在将 Spark 与 scala 一起使用 并且我有一个充满 tuple2 的 RDD 其中包含一个复杂对象作为键和一个 double 目的是如果对象相同 则加倍 频率 为此 我将我的对象定义如下 case class SimpleCo
  • R 中的分组依据和条件

    我有一个具有相似名称 课程 课程和完成情况的数据框 name lt c John John John Sam Sam course lt c Driving Driving Driving Cycling Cycling lesson lt
  • 指定的子项已经有父项。您必须首先对孩子的父母调用removeView()

    我正在做一个关于输入你的名字的应用程序的小练习 它返回 你好 你输入的名字 但是在我按下按钮后 我收到错误 指定的子项已经有父项 您必须首先在子项的父项上调用removeView MainActivity java package com