相关疑难解决方法(0)

Smartcast是不可能的,因为propery有开放或定制的吸气剂

我正在学习Kotlin.我的代码如下:

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    decoupler.attachNotifier(this)
    if(activity is ScreenRouter) {
        decoupler.attachRouter(activity)
    }
}
Run Code Online (Sandbox Code Playgroud)

attachRouter() 方法:

 fun attachRouter(router: ScreenRouter?) {
    this.router = router
}
Run Code Online (Sandbox Code Playgroud)

文档中所述,kotlin在使用is运算符检查后自动转换为类型.所以,我希望它会起作用.但相反,它困扰我编译错误说:

Smartcast ScreenRouter是不可能的,因为它activity是一个开放或定制的吸气剂.

我想也许错误是因为活动可以为空,所以我试过:

if(activity!=null && activity is ScreenRouter) {
     decoupler.attachRouter(activity)
}
Run Code Online (Sandbox Code Playgroud)

但它没有工作,编译失败同样的错误.

但是,以下代码工作正常:

if(activity is ScreenRouter) {
    decoupler.attachRouter(activity as ScreenRouter)
}
Run Code Online (Sandbox Code Playgroud)

它没关系,但上面的错误似乎没有解释为什么smartcast失败.我不是Kotlin专家,我只是一个学习Kotlin的初学者.我找不到任何文件.这些错误描述使Kotlin难以学习.任何人都可以简单地解释一下吗

java android types casting kotlin

25
推荐指数
3
解决办法
6173
查看次数

kotlin'onCreate'没有任何内容

我在我的公共模块BaseActivity.kt和BaseFragment.kt中使用组件开发.当其他模块继承它们时会发生以下问题

> D:\Android\OneDaily\module_main\src\main\java\com\boco\main\MainActivity.kt
> Error:(7, 24) Unresolved reference: base 
> Error:(9, 22) Unresolved reference: BaseActivity 
> Error:(21, 5) 'onCreate' overrides nothing
> Error:(17, 5) 'getLayoutRes' overrides nothing 
> Error:(22, 15) Unresolved reference: onCreate 
> Error:(27, 22) Unresolved reference: findViewById 
> Error:(42, 34) Unresolved reference: supportFragmentManager
> D:\Android\OneDaily\module_main\src\main\java\com\boco\main\TimelineFragment.kt
> Error:(7, 24) Unresolved reference: base 
> Error:(10, 5) 'getLayoutRes' overrides nothing 
> Error:(9, 26) Unresolved reference: BaseFragment
> Error:(14, 5) 'onCreateView' overrides nothing 
> Error:(15, 22) Unresolved reference: onCreateView
Run Code Online (Sandbox Code Playgroud)

BaseActivity.kt:

abstract class …
Run Code Online (Sandbox Code Playgroud)

android kotlin

24
推荐指数
3
解决办法
2万
查看次数

类型不匹配:推断类型是FragmentActivity?但是在将支持库更新到27.0.0时需要使用Context

我已经更新了我的Kotlin项目以使用支持库27.0.0.当我尝试在片段中获取Activity上下文时,我收到此错误:

> Type mismatch: inferred type is FragmentActivity? but Context was expected
Run Code Online (Sandbox Code Playgroud)

android kotlin

10
推荐指数
1
解决办法
7131
查看次数

标签 统计

android ×3

kotlin ×3

casting ×1

java ×1

types ×1