Java 无法添加自定义视图类

Java 无法添加自定义视图类,java,android,view,android-view,Java,Android,View,Android View,我希望能够使用layout_name.addview自定义视图类实例将自定义视图类添加到特定布局中,或者将它们添加到列表视图中 我打算以编程方式添加其中许多视图,并希望能够分别获得每个视图的编辑文本/微调器等值 当我尝试添加此自定义视图时,不会显示任何内容,我在第二次添加视图时也会收到此错误 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView()

我希望能够使用layout_name.addview自定义视图类实例将自定义视图类添加到特定布局中,或者将它们添加到列表视图中

我打算以编程方式添加其中许多视图,并希望能够分别获得每个视图的编辑文本/微调器等值

当我尝试添加此自定义视图时,不会显示任何内容,我在第二次添加视图时也会收到此错误

 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:3577)
            at android.view.ViewGroup.addView(ViewGroup.java:3430)
            at android.view.ViewGroup.addView(ViewGroup.java:3375)
            at android.view.ViewGroup.addView(ViewGroup.java:3351)
            at com.modup.fragment.CreateFragment.onClick(CreateFragment.java:192)
            at android.view.View.performClick(View.java:4442)
            at android.view.View$PerformClick.run(View.java:18473)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5105)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
            at dalvik.system.NativeStart.main(Native Method)
如何将此具有特定布局的WorkoutView添加到LinearLayout中,该LinearLayout是为setContentView使用的视图而膨胀的原始布局的一部分

更新:

我正在尝试将此视图插入到一个布局中,该布局包含在父布局中,父布局为将视图设置为setContentView而膨胀

R.id.create_fragment_在原始setContentView中使用的布局

R.id.workout\u布局在创建\u片段\u布局中

我想在这个布局中插入自定义视图,这个自定义视图需要有自己的R.id.somename\u布局,里面有很多元素

WorkoutView自定义类

我是如何创建视图的

如何将视图添加到线性布局


1.为了保留单个视图的数据,您需要为它们分配一个唯一的id。 您可以在运行时生成唯一id并引用此链接

维护唯一id


2.对于第二个问题,我认为您需要创建该视图的另一个对象,并将其添加到训练布局中

您正在自定义类中扩展布局文件。因此,您已经在该自定义类中添加了一个视图,并且再次在这里执行相同的操作

workoutLayout.addView(workoutView);
所以问题就出现了。您需要更改以下内容

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    workoutView = new WorkoutView(getActivity());
    setContentView(workoutView);

java.lang.IllegalStateException:指定的子级已具有父级。必须首先调用子级的父级上的removeView。“平均工作视图”已添加到另一个视图中。因此,没有办法拥有父布局,而不是将单独的视图插入到该父布局中?我希望维护创建的原始ContentView,但在该ContentView中有一个布局,我希望多次将我的WorkoutView类插入其中。
workoutLayout.addView(workoutView);
workoutLayout.addView(workoutView);
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    workoutView = new WorkoutView(getActivity());
    setContentView(workoutView);