У меня есть следующая проблема: я хочу добавить пользовательское представление (custom_view.xml и связанный с ним класс CustomView.java) к моей основной деятельности.
Итак, я делаю следующее:
1) В моей основной деятельности (связанной с main.xml):
CustomView customView = new CustomView(this); mainView.addView(customView);
2) В моем классе CustomView.java (который я хочу связать с custom_view.xml):
public class CustomView extends View { public CustomView(Context context) { super(context); /* setContentView(R.layout.custom_view); This doesn't work here as I am in a class extending from and not from Activity */ TextView aTextView = (TextView) findViewById(R.id.aTextView); // returns null ///etc.... } }
Моя проблема заключается в том, что aTextView остается равным нулю … Кажется, это явно связано с тем, что мой custom_view.xml не связан с моим классом CustomView.java. Как я могу сделать эту ссылку? Действительно, я попробовал setContentView (R.layout.custom_view); Но он не работает (ошибка компиляции), так как мой класс распространяется из класса View, а не класса Activity.
Спасибо за вашу помощь !!
Если я получу вас правильно, вы пытаетесь создать customview из layoutfile (R.layout.custom_view). Вы хотите найти текстовое представление из этого файла макета. Это правильно?
Если это так, вам нужно раздуть файл макета с помощью контекста u have. Затем u может найти текстовое представление из файла макета.
Попробуй это.
LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.custom_view, null); TextView aTextView = (TextView) v.findViewById(R.id.aTextView);
Я предлагаю вам попробовать следующее:
TextView aTextView = (TextView) ((Activity)this.getContext()).findViewById(R.id.aTextView);
Это сработало для меня !!!
Попробуйте раздуть customView.
Во-вторых, попробуйте (я полагаю, что aTextView id присутствует в стороне CustomView)
TextView aTextView = (TextView) mainView.findViewById(R.id.aTextView);