@PK_D

Как повторно использовать код для Android-приложений?

Всем привет!

Разбираюсь сейчас с программированием под Android и возник вопрос как правильно написать код, чтобы также можно было его использовать в других приложениях?

У меня есть activity, которая отображает для пользователя несколько элементов:

  1. EditText1
  2. EditText2
  3. Spinner1
  4. EditText3
  5. EditText4
  6. Button1
  7. Button2


При выборе определенных значений в Spinner1 элементы EditText3/4 могут появляться и исчезать.

Button1/2 имеют собственные обработчики, которые расположены в этой же activity.

1. Возможно ли сделать так, чтобы Spinner1, EditText3, EditText4, Button1, Button2 можно было повторно использовать приложениях? Т.е. написать несколько строк в layout'e и получить ту же самую структуру и поведение: при выборе элемента выпадающего списка текстовые поля исчезают/появляются и т.д.

2. Можно ли вынести в общий "пакет" ряд вспомогательных функций, например: установка/получение значений для этих полей в SystemPreference и т.д.

Сейчас весь код находится в одной Activity и работать с ним становится всё сложнее и сложнее.

Подскажите, пожалуйста, в какую сторону смотреть

Спасибо.
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
Le_barto
@Le_barto
Junior android developer
1. Возможно, для этого нужно создать свой класс кнопки, спинера, EditText, чего угодно
public class CustomEditText extends EditText {
// Твоя логика, можно написать тут свои листенеры а в Activity передавать Spinner чтобы подписываться на его изменение
}


И далее в layout'e
<your.package.CustomEditText
...
/>

Если нужно полностью повторить всю структуру то возможно стоит использовать Fragment'ы

2. Не совсем понимаю что такое SystemPreference, возможно имелось ввиду SharedPreference.
Можно, для этого, например, можно создать класс SharedPreferenceUtil в котором объявить

class SharedPreferenceUtil {
	private final SharedPreferences preferences;
private SharedPreferenceUtil (Context context) {
		preferences = context.getSharedPreferences(PREFERENCES, Context.MODE_PRIVATE);
}

public int getValue() {
		return preferences.getInt(PREFERENCE_VALUE, 0);
}

Как то так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы