Kotlin kotlinClass.class.getName()不能返回包名,而只能返回简单的类名

AClass.class.getName(); 如果AClass是一个java类,这个方法将返回包名和类名。 但是当我将AClass java文件转换为Kotlin文件时,它只会返回一个类名。 所以系统找不到这个类的路径 上面的代码

Kotlin协同吞咽exception

我很困惑如何exception处理协同作品。 我希望有可能有一个挂起的function,可以通过例如自己之间的例外同步代码。 所以如果说Retrofit抛出一个IOExceptionexception,我可以在挂起函数链的开始处理这个exception,例如在演示者中向用户显示错误。 我做了这个简单的例子来尝试协同程序,但如果我取消注释throw Exception调用exception后运行的代码失败,但exception不会崩溃的应用程序。 package com.example.myapplication import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.widget.Button import android.widget.TextView import kotlinx.coroutines.experimental.delay import kotlinx.coroutines.experimental.launch class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val text = findViewById(R.id.thing_text) val button = findViewById(R.id.thing_button) var count = 0 button.setOnClickListener { launch { count++ // throw Exception(“Boom”) val string = delayedStringOfInt(count) […]

在Kotlin中使用FirebaseListAdapter

我试图实现一个ListView与FirebaseListAdapter附加在它上面。 我需要显示适配器内的字符串列表,所以我使用String作为generics。 Firebase数据库的结构是这样的: 我需要显示在users节点(102127 …,102133 …等)下可用的密钥,所以我使用此代码来创建适配器: val ref = db.getReference(MATCHES_REF).child(match).child(USERS_REF) val adapter = object : FirebaseListAdapter(this, String::class.java, R.layout.cell_friends, ref) { override fun populateView(view: View, s: String, i: Int) { val text = view.findViewById(R.id.text_view) as TextView text.text = s } } listView?.adapter = adapter 这是Android Studio中显示的错误: 错误:(50,32)以下函数都不能用所提供的参数调用:public constructor FirebaseListAdapter(activity:Activity !, parser :((DataSnapshot!) – > String!)!,@LayoutRes modelLayout:Int,query […]

如何使用Tab布局与数据绑定库和Kotlin

我试图在Kotlin项目中使用Tab Layout + Android Data Binding Library,但是我没有成功。 请告诉我我做错了什么? 这是我的活动: class WoActivity : BaseActivity() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = DataBindingUtil.setContentView(this, R.layout.activity_wo) as ActivityWoBinding binding.wo = WorkOrder() setSupportActionBar(binding.toolbar) supportActionBar!!.setDisplayHomeAsUpEnabled(true) binding.setHandler(this); binding.setManager(getSupportFragmentManager()); } companion object { @BindingAdapter(“handler”) @JvmStatic fun bindViewPagerAdapter(view: ViewPager, activity: WoActivity) { val adapter = WOPagerAdapter(activity.supportFragmentManager) adapter.addFragment(WoTabWoFragment.newInstance(), view.context.getString(R.string.work_order)) adapter.addFragment(WoTabScheFragment.newInstance(), view.context.getString(R.string.scheduling)) view.adapter = […]

什么?在Kotlin做什么?

我无法弄清楚什么?:例如在这种情况下 val list = mutableList ?: mutableListOf() 为什么可以修改它呢? val list = if (mutableList != null) mutableList else mutableListOf()

Kotlin协同程序:测试Android Presenter时切换上下文

我最近在Android项目中开始使用kotlin协程,但是我有一些问题。 许多人会称之为代码味道。 我正在使用MVP架构,其中的协程在我的演示者中是这样开始的: // WorklistPresenter.kt … override fun loadWorklist() { … launchAsync { mViewModel.getWorklist() } … launchAsync函数以这种方式实现(在我的WorklistPresenter类扩展的BasePresenter类中): @Synchronized protected fun launchAsync(block: suspend CoroutineScope.() -> Unit): Job { return launch(UI) { block() } } 这个问题是,我正在使用依赖于Android框架的UI协程上下文。 我无法将其更改为另一个协程上下文,而无需运行ViewRootImpl$CalledFromWrongThreadException 。 为了能够unit testing,我创建了一个具有不同的launchAsync实现的launchAsync : protected fun launchAsync(block: suspend CoroutineScope.() -> Unit): Job { runBlocking { block() } return mock() } […]

如何避免Kotlin中同名冲突的types?

我对kotlin非常陌生,而且我正在从一本书建立的应用程序中遇到一些麻烦。 我有两个名为预测单独的包中的类,我试图定义一些函数在一个使用其中同名的类包。 该书说导入Forecast类作为ModelForecast,我做了,但现在我有一个问题追踪这种types的不匹配错误的来源。 看来我的convertForecastListToDomain()方法正在期待其他的东西? 请帮我find我正在犯的错误。 如果这件事很简单,我不会感到惊讶,但我仍然无法find它。 MainActivity.kt: package com.example.zacharymcdaniel.weatherkot import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import com.example.zacharymcdaniel.weatherkot.domain.Forecast import org.jetbrains.anko.find class MainActivity : AppCompatActivity() { private val url: String = “http://openweathermap.org/” private val items = listOf( “Mon 6/23 – Sunny – 31/17”, “Tue 6/24 – Foggy – 21/8”, “Wed 6/25 – Cloudy – 22/17”, […]

Kotlin:只读不可变types对可变types的内部variables的访问

在Android中学习ViewModel的时候,出现了一个像Kotlin想要解决的问题。 在下面的代码中,我们可以看到MutableLiveData值正在用来编辑值和指标。 但是,我们不希望这些可变值暴露给其他任何人,特别是Android生命周期的成员。 我们希望Android生命周期成员有权读取值但不设置它们。 因此,下面显示的3个暴露函数是LiveData 不可变类型。 是否有一个更简单或更简洁的方法来公开只能在内部进行编辑的只读值? 这看起来像Kotlin是为了避免:模板的详细程度。 class HomeListViewModel: ViewModel(){ //Private mutable data private val repositories = MutableLiveData<List>() private val repoLoadError = MutableLiveData() private val loading = MutableLiveData() //Exposed uneditable LIveData fun getRepositories():LiveData<List> = repositories fun getLoadError(): LiveData = repoLoadError fun getLoadingStatuses(): LiveData = loading init{…//Do some stuff to MutableLiveData } } 非Android情况可能类似: class […]

如何用Kotlin React Frontend渲染ChartJs

我正在试验一个基于Kotlin和React的简单项目,我有一些数据可以用ChartJs来形象化。 但我不确定如何“连接点”。 我在随机生成一些关于一些虚拟“客户”的背景数据。 这是一个连续不断的数据stream (从技术上讲,如果我不停止的话,它会永远持续下去),看起来像这样: data:{“name”:”John”,”age”: 22,”money”:1088.434131568658585820230655372142791748046875} data:{“name”:”Patric”,”age”: 32,”money”:9803.739582599226196180097758769989013671875} data:{“name”:”Sven”,”age”: 13,”money”:6654.2184028105320976465009152889251708984375} data:{“name”:”Trevor”,”age”: 29,”money”:1818.314185601747112741577439010143280029296875} data:{“name”:”John”,”age”: 30,”money”:427.240483111973617269541136920452117919921875} data:{“name”:”Mark”,”age”: 15,”money”:3065.9830877835693172528408467769622802734375} data:{“name”:”Daniel”,”age”: 18,”money”:5860.1371074951812261133454740047454833984375} data:{“name”:”Chris”,”age”: 28,”money”:7547.2329861790212817140854895114898681640625} 这是我的模型: data class CustomerData(var name: String, var age: Int, var money: Int) 和我的图表组件: interface CustomerChartProps : RProps { var customerDataList: List } interface CustomerChartState : RState { var customerDataList: List } class CustomerChart : […]

Kotlin协同工具使用生产和mockito来嘲笑生产工作

我在我的Android应用程序中测试Kotlin协同程序,我正在尝试执行以下unit testing @Test fun `When getVenues success calls explore venues net controller and forwards result to listener`() = runBlocking { val near = “Barcelona” val result = buildMockVenues() val producerJob = produce<List>(coroutineContext) { result.value } whenever(venuesRepository.getVenues(eq(near))) doReturn producerJob // produce corooutine called inside interactor.getVenues(..) interactor.getVenues(near, success, error) // call to real method verify(venuesRepository).getVenues(eq(near)) verify(success).invoke(argThat { […]