Динамически создаваемый EditText появляется в эмуляторе, но не появляется на устройстве - PullRequest
1 голос
/ 19 марта 2020

В приложении, над которым я работаю, пользователь выберет упражнение из выпадающего списка. В зависимости от того, что выбрано, должны появиться поля EditText для пользовательского ввода. В эмуляторе это так. Однако, когда приложение установлено на физическом устройстве, поля EditText не отображаются.

Я просмотрел онлайн, но не смог найти решение.

В эмуляторе

Поля, которые должны отображаться при выборе «Ходьба»

Поля, которые должны отображаться, когда «Плечо жмет» selected

On Device

Ящики, не отображаемые при выборе «Walking»

поля, не отображаемые при выборе «Shoulder Press»

Содержимое файла xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:layout_editor_absoluteX="347dp"
    tools:layout_editor_absoluteY="8dp">

    <TextView
        android:id="@+id/workoutDate"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140dp"
        android:text="TextView" />

    <Spinner
        android:id="@+id/exerciseSpinner"
        android:layout_width="216dp"
        android:layout_height="47dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="101dp"
        android:text="@string/workout_select"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <LinearLayout
        android:id="@+id/workoutLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="96dp"
        android:orientation="horizontal"></LinearLayout>

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/workout_add"
        tools:layout_editor_absoluteX="497dp"
        tools:layout_editor_absoluteY="177dp" />

</LinearLayout>

<LinearLayout
    android:id="@+id/workoutLinearLayoutList"
    android:layout_width="match_parent"
    android:layout_height="375dp"
    android:layout_marginTop="288dp"
    android:orientation="vertical"
    app:layout_constraintTop_toTopOf="parent"
    tools:layout_editor_absoluteX="0dp"></LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginTop="665dp"
    android:orientation="vertical"
    android:paddingLeft="140dp"
    android:paddingTop="650dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <Button
        android:id="@+id/saveButton"
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:text="Save" />

</LinearLayout>

Соответствующие разделы Java файла

    final ExerciseDatabaseHelper EDH = new ExerciseDatabaseHelper( context );

    final int ident = new Random().nextInt(1001);

    final EditText textInput1 = new EditText(this);
    final EditText textInput2 = new EditText(this);
    final EditText textInput3 = new EditText(this);
    final EditText textInput4 = new EditText(this);
    final CheckBox customSet = new CheckBox(this);
    final Spinner setsSpinner = new Spinner(this);


    List<String> ExList = EDH.getAllExercises();

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ExList );
    dataAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
    sp1.setAdapter( dataAdapter );

    sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            Object item = adapterView.getItemAtPosition( i );
            updateDisplay( item.toString(),
                    EDH,
                    textInput1,
                    textInput2,
                    textInput3,
                    textInput4,
                    customSet,
                    setsSpinner
                    );

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            //nothing
        }
    });

private void updateDisplay( final String exercise,
                            final ExerciseDatabaseHelper EDH,
                            final EditText tx1,
                            final EditText tx2,
                            final EditText tx3,
                            final EditText tx4,
                            final CheckBox ch1,
                            final Spinner sp1
                            )
{
    String typeName = EDH.getExerciseType( exercise );

    LinearLayout LL = (LinearLayout) findViewById(R.id.workoutLinearLayout);

    List<String> setList = EDH.getSets();
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, setList );
    dataAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
    sp1.setAdapter( dataAdapter );

    ch1.setText( "Custom set" );

    if( typeName.equals( "Distance" ) )// == "Distance" )
    {
        LL.removeAllViewsInLayout();
        LL.addView(tx1);
        LL.addView(tx2);
        LL.addView(tx3);
        LL.addView(tx4);
        tx1.setHint( "Distance" );
        tx2.setHint( "Mins" );
        tx3.setHint( "Secs" );
        tx4.setHint( "Calories" );
    }
    else if( typeName.equals( "Weight" ) )// == "Weight" )
    {
        LL.removeAllViewsInLayout();
        LL.addView(tx1);
        LL.addView(sp1);
        LL.addView( ch1 );
        tx1.setHint( "Weight" );
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...