gpt4 book ai didi

android - Android 自定义 View 中的 IDE 警告

转载 作者:行者123 更新时间:2023-11-29 19:07:48 25 4
gpt4 key购买 nike

我真的很好奇自定义 View 的构造函数。目前我有一个 extends RelativeLayout。每个 View 都需要 context 进行初始化。所以,我将 super() 放在构造函数中。虽然,我的类(class)中需要 activity,所以我从中获取了 context。据我所知,activity 也是一个 context 所以为什么 Android Studio 给我检查我缺少 的构造函数上下文?我的类(class)看起来像这样:

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 给我的消息:

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

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

感谢您提供所有信息!

最佳答案

最好传递 Context 而不是 Activity,因为它可以使用 Context 但没有 调用 View > Activity 。例如,如果您从 Service 调用 Dialog

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

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

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

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

关于android - Android 自定义 View 中的 IDE 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com