Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
DrankUser
0 / 2 / 3
Регистрация: 29.01.2017
Сообщений: 83
Завершенные тесты: 2
1

Подключение одного объекта к другому по reference атрибуту

04.09.2017, 21:48. Просмотров 372. Ответов 2

Создал кастомный класс - кнопку для ввода чего-либо в TextView.
От суперкласса Button отличается только наличием строкового поля mValue и поля-объекта mTextView для привязки.

Весь смысл создания этого класса - перенос огромного количества кода в onClick в XML путём простого указания значения value и ссылки на редактируемый textView

С получением из списка атрибутов строки Value проблем нет, также как и нет проблем с получением ID элемента textView.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public InputKey(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setOnClickListener(this);
 
        TypedArray a = context.getTheme().obtainStyledAttributes(
                attrs,
                R.styleable.InputKey,
                0, 0);
 
        try {
            mValue = a.getString(R.styleable.InputKey_value);
            viewId = a.getResourceId(R.stylable.InputKey_editableTextView);
        } finally {
            a.recycle();
        }
}
Проблема в том, что я не могу получить объект TextView чтобы работать с ним:
Java
1
mTextView = (TextView) findViewById(viewId); //возвращает null
Как я понял, это из-за того что искомый textView ещё не привязан к контексту

При привязке textView вручную в коде активности (onCreate) всё работает, но мне нужно понять, как сделать эту привязку именно с помощью XML атрибута.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2017, 21:48
Ответы с готовыми решениями:

Плавное перемещение одного объекта к другому
Здравствуйте, есть у меня две точки, которые находятся на неком расстоянии друг от друга по...

Постоянная привязка одного объекта к другому
Друзья, всем доброго времени суток! Есть задача: жестко привязать один объект к другому. Есть...

Присвоение одного объекта другому в access
HELP!!!!!! есть список театров. в каждом театре свои спектакли! я оформляю заказ. делаю форму...

Необходимо передать координаты одного объекта другому
У меня есть два класса class1 и class2. Объект class1 a перемещается по сцене. Так вот, мне надо...

Как функцию одного объекта к присвоить другому
Есть массив Button SolidButton = new Button;, есть кнопка button1 с button1_Click ...

2
Pablito
2836 / 2254 / 762
Регистрация: 12.05.2014
Сообщений: 7,890
Завершенные тесты: 1
05.09.2017, 10:07 2
разметка где?
0
DrankUser
0 / 2 / 3
Регистрация: 29.01.2017
Сообщений: 83
Завершенные тесты: 2
05.09.2017, 11:34  [ТС] 3
Разметка выглядит так
XML
1
2
3
4
5
6
7
8
9
<EditText 
android:id="@+id/et"
/> <!-- ну и остальные атрибуты -->
 
<!-- тут имя кнопки в реальности куда длиннее из-за неймспейсов, но думаю это здесь можно опустить -->
<InputKey 
app:value="abc"
app:editableTextView="@id/et"
/> <!-- точно также, остальные атрибуты присущие Button>
Добавлено через 3 минуты
На самом деле я решил эту проблему ещё вчера, действительно findViewById должен был быть не в конструкторе

Я поместил его в метод onLayout()

Java
1
2
3
4
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);
    mTextView = (TextView) ((Activity)getContext()).findViewById(viewId);
}
Прошу обратить внимание на (Activity)getContext(), это главная загвоздка, ведь искать нужный элемент надо именно в родительской активности, а не внутри кастомного View, раньше я просто писал findViewById(), что тоже возвращало null
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2017, 11:34

Подключение одного роутера к другому
Всем привет. Имеется роутер от МТС и роутер от бывшего провайдера(Акадо) Thomson. Возможно ли...

Как присвоить значения из одного объекта другому объекту?
у меня два объекта, мне надо присвоить значения из одного объекта другому объекту, как это можно...

MS SQL Server 2005 express подключение бд с одного сервера к другому
Всем доброго времени суток. Есть такая задача: есть сервер (см. тему) на котором лежит несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru