如何在 Kotlin 中访问“Activity.this”?

     2023-02-25     196

关键词:

【中文标题】如何在 Kotlin 中访问“Activity.this”?【英文标题】:How to access "Activity.this" in Kotlin? 【发布时间】:2017-05-27 18:55:22 【问题描述】:

我有这段 Java 代码:

MaterialDialog builder = new MaterialDialog.Builder(MainActivity.this)

我想在 Kotlin 中获取 MainActivity 对象。自动转换在MainActivity.this 处中断。

【问题讨论】:

可能是this as MainActivity? 如果这段代码不在MainActivity 中,那么它连接到MainActivity 的哪个实例(以及如何连接)?您想以this 的身份访问哪个实例? 工作 Java 代码只引用了 activity.this,所以是静态的吗?我不确定。 工作 Java 代码是否也在一个完全独立的文件中? 如果不在MainActivity 中但仍将this 转换为MainActivity,如何调用此代码?也许在一个子类中? 【参考方案1】:

您可以使用qualified this 在 Kotlin 中获取对您的 MainActivity 对象的引用。例如:

class MyActivity : MainActivity() 
    val builder = MaterialDialog.Builder(this@MyActivity)

【讨论】:

片段怎么样?我已经将 Context 注入 Fragment(带有@ActivityContext 属性),现在我需要 Activity。当然,我知道Fragment中的getActivity()(Kotlin activity),但是第二种方式可以吗还是因为我有上下文,最好用它来访问活动? @Dr.jacky 我认为您可以进行 '(context as?YourActivity)' 演员表。现在您可以访问您的活动方法 @siddarth-g 如果您对未解决的引用有疑问,那么我建议您使用MCVE 创建一个新问题以获得帮助。 @mfulton26 它不是编译问题 this@ActivityName 在另一个项目中也不适用于我。【参考方案2】:

试试这个标签

this@YourActivityName

【讨论】:

未解决的参考 无法编译 @IgorGanapolsky 将 ActivityName 更改为您的 Activity 名称 -_- @SiddarthG 确保你的内部类标有“内部”这是我的问题【参考方案3】:

如果您从内部类调用 Activity.this,则必须将 inner 放在类之前

class MyActivity : MainActivity() 
    // Call from class itself
    val builder = MaterialDialog.Builder(this@MyActivity) 

    inner class Inner 
        this@MyActivity // Call from the inner class 
    

【讨论】:

@Allen 你是对的,需要 inner 关键字才能访问内部类中的 Activity【参考方案4】:

答案是:this@ActivityName

例如:如果你想在 MainActivity.kt 中定义“上下文”,你应该使用它

var mContext:Context = this@MainActivity

为什么?因为在 Kotlin 语言中,@ 表示“的”,例如:

val a = this@A // A's this

如果您想了解更多信息,可以查看 Kotlin 语言网站: This Expression in Kotlin

【讨论】:

【参考方案5】:

在科特林中

this@MainActivity

相当于JAVA

MainActivity.this

【讨论】:

【参考方案6】:

就像您在 java 中将活动上下文获取为 MainActivtiy.this 一样,在 kotlin 中您将获取上下文为 this@MainActivity

【讨论】:

你添加这个 cmets 是为了什么?你能给出一些解决的参考吗?对我们有帮助,让我们下次继续关注【参考方案7】:

getActivity() 等价于 this@activity_name 如果是materialDialog的构建器

materialDialog = MaterialDialog.Builder(this)

【讨论】:

【参考方案8】:

可以这样获取activity的对象。

class DemoActivity : BaseActivity() 
    val builder = MaterialDialog.Builder(this@DemoActivity)

【讨论】:

如何在 Kotlin 中访问 variant.outputFileName

】如何在Kotlin中访问variant.outputFileName【英文标题】:Howtoaccessvariant.outputFileNameinKotlin【发布时间】:2018-11-2009:23:11【问题描述】:我们一直在使用类似这样的sn-p来重命名Gradle构建生成的APK文件:android.applicationVariants.allvariant->v... 查看详情

在 Kotlin 中如何从不同的模块访问内部成员

】在Kotlin中如何从不同的模块访问内部成员【英文标题】:HowcanIaccesstheinternalmembersfromadifferentmoduleinKotlin?【发布时间】:2022-01-1416:30:33【问题描述】:在Kotlin中,当对公共类的成员函数应用“内部”时,它只在模块内部可见。如... 查看详情

如何在 Kotlin 的 Ktor 中提取访问权限验证

】如何在Kotlin的Ktor中提取访问权限验证【英文标题】:HowtoextractaccessrightsvalidationinKotlin\'sKtor【发布时间】:2019-10-1111:49:46【问题描述】:我有基于Ktor的RESTAPI应用程序,它使用jwt令牌作为身份验证。然后我必须为特定角色限制... 查看详情

如何在 kotlin android 的活动中访问应用程序类变量

】如何在kotlinandroid的活动中访问应用程序类变量【英文标题】:HowtoaccessApplicationclassvariablesinactivityinkotlinandroid【发布时间】:2019-07-2104:06:41【问题描述】:我曾经通过使用java中的公共方法如何使用kotlin做同样的事情App.ktclassApp:... 查看详情

在 kotlin 中,如何从子类访问父类中受保护的静态成员

】在kotlin中,如何从子类访问父类中受保护的静态成员【英文标题】:inkotlin,howtoaccessprotectedstaticmemberinparentclassfromsubclass【发布时间】:2022-01-1701:41:55【问题描述】:它是在java中工作的代码,但转换为kotlin后它无法编译。有一... 查看详情

如何在 Kotlin 中克隆对象?

】如何在Kotlin中克隆对象?【英文标题】:HowtocloneobjectinKotlin?【发布时间】:2018-08-0917:48:31【问题描述】:Kotlindocumentation仅在访问Java和枚举类中描述了克隆。在后一种情况下,克隆只是抛出异常。那么,我/应该如何克隆任意Ko... 查看详情

无法访问kotlin子类中的父类变量

...变量,但我无法使用它们,因为我是kotlin新手,我不明白如何简单地做到这一点我正在尝试访问sharedPerfernces并获取但它给了我nullclasswebViewAc 查看详情

如何在 kotlin Android 中访问更大的 jsonArray json 中的 json 数组中的字符串

】如何在kotlinAndroid中访问更大的jsonArrayjson中的json数组中的字符串【英文标题】:HowdoiaccessthestringsinajsonarrayinabiggerjsonArrayjsoninkotlinAndroid【发布时间】:2021-10-0700:21:00【问题描述】:我在androidstudio中有一个json文件,它是一个json... 查看详情

如何在 Kotlin 中请求 GPS 位置更新

】如何在Kotlin中请求GPS位置更新【英文标题】:HowtorequestforGPSlocationupdatesinKotlin【发布时间】:2021-12-0923:02:51【问题描述】:我正在开发一个需要每2-3秒访问一次用户位置的Android应用程序(使用Kotlin)。在过去的几天里,我一直... 查看详情

如何在 android Kotlin 中获取以前的活动

】如何在androidKotlin中获取以前的活动【英文标题】:HowtogetpreviousactivityinandroidKotlin【发布时间】:2019-04-3004:16:07【问题描述】:假设我的默认活动是MainActivity,我开始另一个活动DepositActivity没有在finish()中使用finish()@现在我如何... 查看详情

如何在类似于Java的kotlin中声明常量[重复]

】如何在类似于Java的kotlin中声明常量[重复]【英文标题】:HowtodeclareconstantsinkotlinsimilartoJava[duplicate]【发布时间】:2019-05-1001:07:06【问题描述】:在Java类中,我通常将所有常量声明在一个单独的整个项目的常量文件和访问如何在... 查看详情

如何在 firebase 数据库中使用 kotlin 协程

】如何在firebase数据库中使用kotlin协程【英文标题】:Howtousekotlincoroutinesinfirebasedatabase【发布时间】:2019-08-0719:43:11【问题描述】:我正在尝试使用firestore和协程访问聊天室。fungetOwner()runBlockingvarde=async(Dispatchers.IO)firestore.collectio... 查看详情

在 Kotlin 中访问私有变量 [重复]

】在Kotlin中访问私有变量[重复]【英文标题】:AccessprivatevariableinKotlin[duplicate]【发布时间】:2020-07-2404:46:20【问题描述】:所以,我正在尝试使用Kotlin作为PenandPaperRPG伴侣开发一个Android应用程序。现在我想做一个像这样的暴徒类... 查看详情

如何通过 Kotlin 中的 gson 访问嵌套 JSON 中的值?

】如何通过Kotlin中的gson访问嵌套JSON中的值?【英文标题】:HowtoaccessvaluefromnestedJSONthroughgsoninKotlin?【发布时间】:2021-07-1904:20:47【问题描述】:我希望在这个JSON中访问flower_idid的值。我想通过gson或JSONObject访问它。这是我的课程... 查看详情

Android/Kotlin:在 Retrofit Interceptor 中访问 sharedPreferences

】Android/Kotlin:在RetrofitInterceptor中访问sharedPreferences【英文标题】:AccessingsharedPreferencesinsideRetrofitInterceptor【发布时间】:2020-01-2006:52:02【问题描述】:这是一个Retrofit拦截器,用于在请求中自动注入令牌。我正在尝试从sharedPrefe... 查看详情

为啥我们不能在 Kotlin 的 Singleton 类(对象)中使用受保护的访问修饰符

】为啥我们不能在Kotlin的Singleton类(对象)中使用受保护的访问修饰符【英文标题】:Whycan\'tweuseprotectedaccessmodifierinSingletonclass(object)forKotlin为什么我们不能在Kotlin的Singleton类(对象)中使用受保护的访问修饰符【发布时间】:20... 查看详情

如何使用带有 Kotlin 的 Gson 库访问 JSON 有效负载中的嵌套值

】如何使用带有Kotlin的Gson库访问JSON有效负载中的嵌套值【英文标题】:HowcanIaccessthenestedvalueinaJSONpayloadusingGsonlibrarywithKotlin【发布时间】:2021-10-0704:56:24【问题描述】:下面需要解析JSONpayload:"status":"success","data":"stats":"total":1181... 查看详情

如何从 Kotlin 的内部类访问外部类的成员?

】如何从Kotlin的内部类访问外部类的成员?【英文标题】:howtoaccessmemberofouterclassfrominnerclassinKotlin?【发布时间】:2019-09-0302:21:47【问题描述】:如何从kotlin内部类的成员函数中访问外部类的成员。考虑以下代码。classAvarname:String... 查看详情