Вы должны сделать это программно (если вы не используете data binding
).Например, в вашем MyCustomPreference
вы ловите атрибут de myCustomMessage
:
String myCustomMessage = null;
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyCustomPreference, 0, 0);
try {
myCustomMessage = a.getString(R.styleable.MyCustomPreference_myCustomMessage);
} finally {
a.recycle();
}
Здесь вы получили значение String
вашего атрибута.Затем я полагаю, что вы накачали свой MyCustomView
внутри своего MyCustomPreference
.В качестве примера:
View.inflate(getContext(), R.layout.preference_my_custom, this);
MyCustomView myCustomView = (MyCustomView) findViewById(R.id.you_custom_view_id);
Итак, здесь вы можете программно установить myCustomMessage
в вашем MyCustomView
.
myCustomView.setMyCustomMessage(myCustomMessage);
. Вы должны создать этот метод для правильной установки текста,и при необходимости распространите этот текст на другие дочерние представления вашего MyCustomView
.
Теперь, изменив свой String
resId в preferences.xml
, интерфейс должен обновиться, как ожидается.
PS:Поскольку я не знаю все ваши идентификаторы ресурсов, пожалуйста, адаптируйте их под ваш проект.