У меня есть загружаемое действие с несколькими элементами управления EditText и кнопкой. Элементы управления EditText отображают значения из базы данных SQLlite. Я хочу, чтобы элементы управления EditTtext были доступны только для чтения (даже не кликабельны) при загрузке активности, а затем становились доступными для редактирования/кликабельности, когда пользователь нажимает кнопку.
Я прочитал кучу других тем здесь, и кажется, что вы можете сделать это несколькими разными способами.
- Отключить управление в XML и включить в коде (действие пользователя)
- Отключить элемент управления в коде (onCreate) и включить в коде (действие пользователя)
Прямо сейчас я не могу получить любой способ работать. Кажется, что если я отключу его, я никогда не смогу снова включить его для пользовательского ввода. И если я включу его, он всегда будет включен, и я никогда не смогу его отключить.
Вот мой текущий код:
XML - это элемент управления, который я хочу отключить, пока пользователь не сделает что-то (нажимает кнопку)
<EditText
android:layout_width="0dp"
android:layout_weight="1.5"
android:layout_height="wrap_content"
android:cursorVisible="true"
android:editable="false"
android:inputType="numberDecimal"
android:id="@+id/itemPrice"/>
</TableRow>
<!-- End Item Price -->
JAVA — это код, который просто очищает форму/пользовательский интерфейс и пытается включить 2 поля EditText для пользовательского ввода.
//Add item to the inventory. Enables the EditText control for user intput (name and price)
public void addNewItem(View view)
{
try
{
//Clear the fields on the form/UI
itemId.setText("");
itemName.setText("");
itemPrice.setText("");
itemDelete.setText("");
//Enable the controls
itemName.setEnabled(true);
itemPrice.setEnabled(true);
itemName.setFocusable(true);
itemPrice.setFocusable(true);
itemName.setClickable(true);
itemPrice.setClickable(true);
}
catch(Exception erMsg)
{
erMsg.printStackTrace();
}
}
У меня все еще есть setEnabled(true) для каждого элемента управления, хотя он никогда не отключался, но последний код просто пытается что-то сделать, чтобы включить его.
Я не хочу делать этот вопрос субъективным, но есть ли лучший способ, если есть приоритет (XML или Java)? Например, если XML устанавливает для поля значение :focusable:false, а Java устанавливает поле setFocusable(true), существует ли приоритет?