【发布时间】:2013-04-15 07:59:06
【问题描述】:
在我的活动中,我通过一堆控件(输入字段),并创建一个
for(ControlTemplate field: fieldMap.get(string))
{
View view = field.getFieldControl(true, this);
l.addView(view, new PredicateLayout.LayoutParams(2, 0));
}
ControlTemplate 的 getFieldControl 包含一个 switch 语句,它应该返回不同类型的视图。
case LABEL:
view = new TextView(context);
view.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
((TextView) view).setText(value);
break;
但是,我希望能够从 xml 定义创建视图,但这是不可能的,因为该类没有活动,因此它没有布局。我想做的是这样的:
case TEXTBOX:
view = (EditText) passedActivity.findViewById(R.id.edit_message);
break;
其中passedActivity 是创建ControlField 类的活动。有没有办法将当前活动作为参数传递,或者可能只传递其布局资产?
【问题讨论】:
-
将上下文传递给非活动类构造函数并使用它来查找id。
-
@Raghunandan 有什么区别?
-
我已经通过了上下文,但是如何从上下文中获取id呢?
-
如果您有上下文,那么您可以扩充视图,并且可以在该视图上使用 findviewById 来获取其子视图。
-
如果你在不同的班级,我相信你可以导入 R。
标签: android android-layout layout user-interface