【问题标题】:IDE warning in Custom views in AndroidAndroid 自定义视图中的 IDE 警告
【发布时间】:2018-03-15 13:29:51
【问题描述】:

我真的对自定义视图的构造函数很好奇。目前我有一个extendsRelativeLayout。每个视图都需要context 进行初始化。因此,我将super() 放入构造函数中。虽然,我在课堂上需要activity,所以我从中取了context。据我所知,activity 也是context 那么为什么Android Studio 会检查我是否缺少context 的构造函数?我的班级是这样的:

public class CustomView extends RelativeLayout {

    private Activity activity;

    public CustomView(Activity activity) {
        super(activity.getApplicationContext());
        this.activity = activity;
        initialize(activity.getApplicationContext());
    }

    //initialize method
}

这是Android Studio 给我的确切信息:

自定义视图 CustomView 缺少工具使用的构造函数:(Context) or (Context,AttributeSet) or (Context,AttributeSet,int)

我应该忽略这个还是应该同时传入构造函数:activitycontext

感谢您提供所有信息!

【问题讨论】:

    标签: android view


    【解决方案1】:

    最好通过Context 而不是Activity,因为它可以使用Context 而没有Activity 来调用View。例如,如果您从Service 调用Dialog

    同样基于documentation,只有一个构造函数是真正需要的。但是该构造函数包含 AttributeSet 作为参数。

    在你的情况下它应该看起来像

    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.activity = (Activity) context; //better to hold context actually
        initialize(context);
    }
    

    当然好的做法是使用所有可用的构造函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多