Не удается добавить несколько видов макета в alertDialog Исключение происходит - PullRequest
0 голосов
/ 19 октября 2018

Я хочу, чтобы элемент 1 checkBox с editText был горизонтальным, а элемент 2 - с editText вертикальным с предыдущим элементом 1 cb и et1. как это

(элемент 1 cb, et1)
(элемент 2 cb, et2)
(элемент 3 cb, et3)
(элемент 4 cb, et4)

, но с использованием следующего кода у меня возникла исключительная ситуация java.lang.IllegalStateException: указанный дочерний элемент уже имеет родителя.Сначала вы должны вызвать removeView () для родительского объекта ребенка.

И когда я удаляю эту строку dialog_layout1.addView (dialog_layout2); исключение не отображается, и я достигаю этого enter image description here

что я делаю не так?

Вот файл активности EnterRecordActivity.java

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enter_record);

    AlertDialog.Builder builder = new AlertDialog.Builder(EnterRecordActivity.this);

    view = getLayoutInflater().inflate(R.layout.select_contributor_dialog,null);

    dialog_layout1 = view.findViewById(R.id.dialog_layout1);
    dialog_layout2 = view.findViewById(R.id.dialog_layout2);

    dialog_layout2.addView(cb(getApplicationContext(),"item 1"));
    dialog_layout2.addView(editText(getApplicationContext(),""));

    dialog_layout1.addView(dialog_layout2);

    dialog_layout2.addView(cb(getApplicationContext(),"item 2"));
    dialog_layout2.addView(editText(getApplicationContext(),""));

    dialog_layout1.addView(dialog_layout2);

    builder.setView(view);

    dialog = builder.create();
    dialog.show();
}

public CheckBox checkBox(Context context, String text){

    final ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
    final CheckBox checkBox = new CheckBox(context);
    checkBox.setLayoutParams(layoutParams);
    checkBox.setTextSize(19);
    checkBox.setTextColor(Color.rgb(0,0,0));
    checkBox.setText(text);
    return checkBox;
}

public EditText editText(Context context, String text){
    final ViewGroup.LayoutParams lps = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
    final EditText editText = new EditText(context);
    editText.setLayoutParams(lps);
    editText.setTextColor(Color.parseColor("#009788"));
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    editText.setEms(3);
    editText.setMaxEms(3);
    editText.setTextSize(18);
}

Здесьэто файл XML, который я надуваю select_contributor_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/title_color"
    android:theme="@style/CustomTheme"
    android:id="@+id/a">

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/contributor"
        android:textColor="@color/dialog_box_title"
        android:textSize="18sp"
        android:textStyle="bold"
        tools:ignore="RtlSymmetry"
        android:paddingStart="25dp"
        android:paddingTop="15dp"
        android:layout_alignParentStart="true"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/amount"
        android:textColor="@color/dialog_box_title"
        android:textSize="18sp"
        android:textStyle="bold"
        tools:ignore="RtlSymmetry"
        android:paddingEnd="35dp"
        android:paddingTop="15dp"
        android:layout_alignParentEnd="true"
        android:layout_alignEnd="@+id/text1"/>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:ignore="UselessParent"
        android:layout_below="@+id/text1">
        <LinearLayout
            android:id="@+id/dialog_layout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <LinearLayout
                android:id="@+id/dialog_layout2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</RelativeLayout>
...