У меня есть Activity
с 3 EditText
и пользовательское представление, которое действует как специализированная клавиатура для добавления информации в EditText
ы.
В настоящее время я передаю Activity
в представление, чтобы я мог получить текущий сфокусированный текст редактирования и обновить его содержимое с пользовательской клавиатуры.
Есть ли способ сослаться на родительскую активность и получить сфокусированный в данный момент EditText
без передачи активности в представление?
Мне нравится это решение, записанное в использовании Kotlin
tailrec fun Context?.activity(): Activity? = when (this) {
is Activity -> this
else -> (this as? ContextWrapper)?.baseContext?.activity()
}
в View
класс
context.activity()
Скомпилированный код:
public static final Activity activity(Context context) {
while (!(context instanceof Activity)) {
if (!(context instanceof ContextWrapper)) {
context = null;
}
ContextWrapper contextWrapper = (ContextWrapper) context;
if (contextWrapper == null) {
return null;
}
context = contextWrapper.getBaseContext();
if (context == null) {
return null;
}
}
return (Activity) context;
}