从android中的类扩展构造函数

时间:2013-07-01 14:00:25

标签: android

我有一个课程,我延伸LinearLayout。 我有三个构造函数:

public IconsComponent(Context context) {
    super(context);
    init(context);
}

public IconsComponent(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);

}
public IconsComponent(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}

这是我的初学者:

public void init(final Context context, ExtraView patient) {
        this.context = context;
        View root = LayoutInflater.from(context).inflate(
                R.layout.icons_component_view, null);
        LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT);



        vitalParamsIcon = (ImageView) root.findViewById(R.id.icons_component_vital_params);
        vitalParamsIcon.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                startMetActivity(getContext());
            }
        });

        addView(root, layoutParams);
    }

你可以看到我的init有额外的参数:ExtraView。如何将这个参数设置为构造函数?我需要那个参数,因为我想从中获取一些数据。

2 个答案:

答案 0 :(得分:1)

您的布局将实例化(构造函数调用),参数attrs中的所有XML参数都为AttributeSet。您需要从那里获取自定义参数,并使用它们执行您想要的操作。有关编写自定义布局/视图的帮助,请参阅this

答案 1 :(得分:0)

在xml布局上需要使用3个构造函数,因此如果不通过xml实例化此布局,则可以使用所需的参数自由创建新的构造函数,并在代码中使用它。

但是如果使用xml布局,则需要在xml中为布局创建一个参数,并在构造函数中读取该参数。

PS:也许你从代码示例中删除了一些东西,因为你没有使用你想要的额外参数。