Android Studio - 在主要活动中定义需要上下文和属性的类

Posted

技术标签:

【中文标题】Android Studio - 在主要活动中定义需要上下文和属性的类【英文标题】:Android Studio - Define class that requires context and attributes in main activity 【发布时间】:2022-01-08 11:20:39 【问题描述】:

我正在尝试在我的主要活动中使用自定义类。

DrawingCanvas drawingCanvas = new DrawingCanvas();

要定义类,我必须向它传递两个参数。这是我的构造函数。

public DrawingCanvas(Context context, @Nullable AttributeSet attrs) 
    super(context, attrs);

我知道我需要执行以下操作,但我不确定要为属性集传递什么。

DrawingCanvas drawingCanvas = new DrawingCanvas(this, );

【问题讨论】:

【参考方案1】:

我假设 DrawingCanvas 是从 View 类或继承自它的类扩展而来的。

在这种情况下,有类似这样的构造函数很方便:

    public DrawingCanvas(@NonNull Context context) 
        this(context, null);
    

    public DrawingCanvas(@NonNull Context context, @Nullable AttributeSet attrs) 
        this(context, attrs, 0);
    

    public DrawingCanvas(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) 
        super(context, attrs, defStyleAttr);
        // more code…
    

这样你就可以选择最合适的一个。如您所见,当没有AttributeSet 时,您可以通过null

现在你只需要这样做:

DrawingCanvas drawingCanvas = new DrawingCanvas(this);

【讨论】:

这解决了我的问题,谢谢! @Pauline 很高兴它成功了! attrsdefStyleAttr 通常在 XML 中定义,但如果自定义视图类没有任何自定义属性或样式/主题,那么它们并不是真正需要的。更多信息:developer.android.com/training/custom-views/…

以上是关于Android Studio - 在主要活动中定义需要上下文和属性的类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android studio 中创建没有主要活动的应用程序?

在android studio中删除一个带有按钮的listview项目

如何在进入不同活动的情况下不删除 Android Studio 活动中的变量?

如何将自定义按钮应用于 Android Studio 中的活动?

未解决的参考 - 活动无法识别 android studio v4 中的合成导入

Android Studio:新活动以空白屏幕打开