В приложении, над которым я работаю, пользователь выберет упражнение из выпадающего списка. В зависимости от того, что выбрано, должны появиться поля 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" );
}
}