Android 在Kotlin的内部类中使用片段的上下文
我有一个片段Android 在Kotlin的内部类中使用片段的上下文,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,我有一个片段SelectFileFragment,它有一个内部类Test。 我需要使用上下文,即在其内部类Test中启动片段SelectFileFragment的活动 我是Kotlin的新手,所以我想知道如何获取上下文,然后在内部类中使用 //there will be a few lines of code in java representing what i'm trying to achieve. class FileSelectFragment : BaseFragment() {
SelectFileFragment
,它有一个内部类Test
。
我需要使用上下文,即在其内部类Test
中启动片段SelectFileFragment
的活动
我是Kotlin的新手,所以我想知道如何获取上下文,然后在内部类中使用
//there will be a few lines of code in java representing what i'm trying to achieve.
class FileSelectFragment : BaseFragment() {
public Context context; //java
override fun onCreateView{
....
context = getActivity(); //java
....
}
class Test(){
private fun testMethod(){
context.getString(...); //java
}
}
}
在Kotlin中,必须显式声明一个类
内部类
,才能使用外部类中的字段/方法。在Kotlin中,必须显式声明一个类内部类
,才能使用外部类中的字段/方法。添加此答案让您明白。答案与上面@ianhanniballake发布的内容相同
请在下面找到完整的代码片段:如果您回答了您的问题,请将@ianhanniballake post标记为答案
class FileSelectFragment : BaseFragment() {
inner class Test(){
private fun testMethod(){
context.getString(R.string.app_name); //java
}
}
}添加此答案是为了让您明白。答案与上面@ianhanniballake发布的内容相同 请在下面找到完整的代码片段:如果您回答了您的问题,请将@ianhanniballake post标记为答案
class FileSelectFragment : BaseFragment() {
inner class Test(){
private fun testMethod(){
context.getString(R.string.app_name); //java
}
}
}好的。但是我首先如何在Kotlin中获取上下文?并将其保存在变量中。
context
已经是一个可供您使用的属性(Kotlin将getContext()
重写为context
),因此您不需要将其保存为变量或执行任何操作。如果你想要一个非空的上下文实例,你可能需要使用requireContext()
。现在,我得到了一个错误:只有包含类的接收者才能调用内部类的构造函数。你不能从外部类的外部创建内部类。Kotlin和Java都是这样。但是我首先如何在Kotlin中获取上下文?并将其保存在变量中。context
已经是一个可供您使用的属性(Kotlin将getContext()
重写为context
),因此您不需要将其保存为变量或执行任何操作。如果你想要一个非空的上下文实例,你可能需要使用requireContext()
。现在,我得到了一个错误:只有包含类的接收者才能调用内部类的构造函数。你不能从外部类的外部创建内部类。Kotlin和Java都是如此。谢谢@eldhouse!谢谢@eldhouse!