Лучший способ выяснить, был ли ранее выбран EditText

В настоящее время я работаю над программой, в которой есть два поля EditText: одно для ширины экрана, а другое для высоты экрана. Что я хочу сделать, так это то, что когда пользователь знает высоту или ширину и вводит измерение, которое у него есть, в поле EditText, которое соответствует измерению, которое у них есть, и когда они нажимают ввод, это даст им неизвестное измерение для экрана 16:9.

Вот пользовательский интерфейс:

<TextView android:layout_height="wrap_content" 
    android:text="Screen Ratio:" 
    android:id="@+id/ScreenRatio" 
    android:layout_width="100dip" 
    android:layout_alignTop="@+id/ratio_spinner" 
    android:layout_alignBottom="@+id/ratio_spinner" 
    android:gravity="center_vertical" />

<Spinner android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/ScreenRatio" 
    android:id="@+id/ratio_spinner"/>

<TextView
    android:layout_height="wrap_content"
    android:text="Units:"  
    android:layout_width="wrap_content" 
    android:layout_toLeftOf="@+id/unit_spinner"
    android:layout_alignTop="@+id/unit_spinner"
    android:layout_alignBottom="@+id/unit_spinner"
    android:gravity="center_vertical" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/ScreenUnit"/>

<Spinner android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/ScreenRatio" 
    android:layout_below="@+id/ratio_spinner" 
    android:id="@+id/unit_spinner"/> 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:paddingTop="3dip"
    android:paddingBottom="3dip"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_below="@+id/unit_spinner" 
    android:id="@+id/screen_layout"
    android:stretchColumns="1,2">

    <View
        android:layout_height="2dip"
        android:background="#FF909090"/>

    <TableRow>
        <TextView
            android:layout_column="1"
            android:paddingTop="3dip"
            android:text="Screen Width:"/>
        <TextView
            android:layout_column="2"
            android:padding="3dip"
            android:text="Screen Height:"/>
    </TableRow>

    <TableRow
    android:paddingBottom="3dip" >
        <EditText
            android:layout_column="1"
            android:id="@+id/width_EditText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@android:drawable/editbox_background" 
            android:inputType="number"
            android:textSize="14px"
            android:hint="Enter a Width"/>
        <EditText
            android:layout_column="2"
            android:id="@+id/height_EditText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@android:drawable/editbox_background"
            android:numeric="integer"
            android:textSize="14px"
            android:hint="Enter a Height"/>
    </TableRow>



</TableLayout>

<Button
    android:id="@+id/enter"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" 
    android:text="Enter"
    android:gravity="fill"
    android:paddingBottom="10dip"
    android:paddingRight="50dip"
    android:paddingLeft="50dip"  
    android:layout_alignRight="@+id/screen_layout" 
    android:layout_below="@+id/screen_layout"
    />

I want the app to be able to give me the value based on the last number entered into the EditText box and so that the user doesn't have to clear both boxes before trying another number. what is the best way of keeping up with which of the two boxes that the user had entered text into last was? I tried a if else statement based on if the boxes were in focus but couldn't manage to get it to work. Any suggestions?


person mdbell.ua    schedule 28.12.2010    source источник


Ответы (1)


ОТРЕДАКТИРОВАНО:
Добавьте TextWatcher (один и тот же) для обоих EditText, у которых есть метод afterTextChanged(Editable s).

Editable s принадлежит текстовому полю, которое в данный момент вводит пользователь, и имеет переменную-член логического типа widthSelected.

Итак, ваш код будет примерно таким:

if(s == edtWidth.getText())
{
    // User is typing in Width
      widthSelected = true;

}else
{
// User is typing in Height
     widthSelected = false;
}

В вашей кнопке onClickListener:

if(widthSelected)
{
width = Integer.parseInt(edtWidth.getText().toString());
edtHeight.setText("" + (9 * width)/16);
}else{

height = Integer.parseInt(edtHeight.getText().toString());
edtWidth.setText("" + (16 * height)/9);
}
person st0le    schedule 28.12.2010
comment
где будет жить код TextWatcher? в моем файле XML или моем файле .java? и как именно мне это реализовать? Извините, я действительно новичок в jave и android. - person mdbell.ua; 28.12.2010
comment
@mdbella.ua, во-первых, обратите внимание, я немного изменил ответ.... во-вторых, TextWatcher будет внутри вашего кода. используйте функцию addTextChangedListener EditText внутри вашего кода. Гугл для примеров. - person st0le; 28.12.2010