我有以下问题:我想在我的主要活动中添加自定义视图(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保持等于null ...很明显,由于我的custom_view.xml没有链接到我的CustomView.java类。我该怎么做这个链接?的确,我尝试了setContentView(R.layout.custom_view);但它不起作用(编译错误),因为我的类从View类扩展而不是Activity类。
感谢您的帮助!!
答案 0 :(得分:12)
如果我找到你,你正在尝试从layoutfile(R.layout.custom_view)构建自定义视图。您想从该布局文件中查找文本视图。是对的吗?
如果是这样,您需要使用上下文来扩充布局文件。然后你可以从布局文件中找到textview。
试试这个。
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);
答案 1 :(得分:1)
我建议你试试这个:
TextView aTextView = (TextView) ((Activity)this.getContext()).findViewById(R.id.aTextView);
它对我有用!!!
答案 2 :(得分:0)
尝试对customView进行充气。
其次,尝试(我假设aTextView id出现在侧面CustomView中)
TextView aTextView = (TextView) mainView.findViewById(R.id.aTextView);