Questions tagged «kotlin»

Kotlin是JetBrains支持的一种开源静态类型编程语言。Kotlin结合了OOP和功能特性,并专注于互操作性,安全性,清晰度和工具支持。它目前针对JVM和JavaScript,并且是Android上官方支持的语言。


11
Kotlin中的多变量let
有没有办法在kotlin中将多个let链接为多个可为空的变量? fun example(first: String?, second: String?) { first?.let { second?.let { // Do something just if both are != null } } } 我的意思是这样的: fun example(first: String?, second: String?) { first?.let && second?.let { // Do something just if both are != null } }
127 kotlin 


1
Kotlin中的“宁愿在该类上运行匕首处理器”
每当我对kotlin类进行注入时,我都会在构建中得到此注释(顺便说一句,我有一个既包含kotlin又包含Java的混合android项目)。 例如,执行以下gradle任务:(compileStagingDebugJavaWithJavacStagingDebug是我的构建变体),我收到以下消息: “注意:为com.packageNameXXX.CourseDiscoveryMapFragment生成MemberInjector或Factory。最好在该类上运行匕首处理器。” 我的CourseDiscoveryMapFragment代码可以在这里看到: class CourseDiscoveryMapFragment : Fragment(){ @Inject lateinit var presenter: CourseDiscoveryMapPresenter lateinit var mapView: MapView override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view = inflater.inflate(R.layout.fragment_discovery_map, container, false) MapsInitializer.initialize(activity) mapView = view.mapView mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE)) (activity as BaseActivity) .activityComponent.inject(this) } 我的ActivityComponent是: @ActivityScope @Subcomponent(modules = ActivityModule.class) public interface …
124 android  kotlin  dagger 

19
Android Room-简单选择查询-无法访问主线程上的数据库
我正在使用Room Persistence Library尝试一个示例。我创建了一个实体: @Entity public class Agent { @PrimaryKey public String guid; public String name; public String email; public String password; public String phone; public String licence; } 创建了一个DAO类: @Dao public interface AgentDao { @Query("SELECT COUNT(*) FROM Agent where email = :email OR phone = :phone OR licence = :licence") …


2
属性必须初始化或抽象
这肯定是一个愚蠢的问题,但是我真的是Kotlin的新手,我没有找到任何解决方案。 如何声明类字段?就像我们可以在Java中使用它一样: protected SharedPreferences mSharedPreferences; 然后在onCreate(): mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) 现在,我可以在任何需要的地方使用它(在此基本活动的子类中)。 我尝试在Kotlin中做同样的事情: protected var sharedPreferences : SharedPreferences 在onCreate(): sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) 但我得到一个警告:“属性必须初始化或抽象”
121 android  kotlin 

11
如何在Kotlin中解析JSON?
我从服务中收到一个很深的JSON对象字符串,必须将其解析为JSON对象,然后将其映射到类。 如何在Kotlin中将JSON字符串转换为对象? 在映射到各个类之后,我使用了Jackson的StdDeserializer。当对象具有必须反序列化为类的属性时,就会出现问题。我无法在另一个反序列化器中获取对象映射器,至少我不知道该怎么做。 在此先感谢您的帮助。最好是在本地,我试图减少所需的依赖项数量,因此,如果答案仅用于JSON操作并进行解析就足够了。
121 java  json  kotlin 


8
在Kotlin的`forEach`中的`break`和`continue`
Kotlin具有很好的迭代功能,例如forEach或repeat,但是我无法使breakand continue运算符与它们一起使用(本地和非本地): repeat(5) { break } (1..5).forEach { continue@forEach } 目标是使用功能语法尽可能接近的方式模仿常规循环。在某些较旧的Kotlin版本中肯定是有可能的,但是我很难重现该语法。 问题可能是带有标签(M12)的错误,但是我认为第一个示例仍然可以工作。 在我看来,我已经阅读过有关特殊技巧/注释的内容,但是找不到关于该主题的任何参考资料。可能如下所示: public inline fun repeat(times: Int, @loop body: (Int) -> Unit) { for (index in 0..times - 1) { body(index) } }
119 loops  foreach  lambda  kotlin 

6
暂停功能在Kotlin Coroutine中意味着什么
我正在阅读Kotlin Coroutine,并且知道它基于suspend功能。但是什么suspend意思呢? 协程或功能被暂停? 来自https://kotlinlang.org/docs/reference/coroutines.html 基本上,协程是可以在不阻塞线程的情况下挂起的计算 听说人们经常说“暂停功能”。但我认为是协程被暂停,因为它正在等待功能完成?“挂起”通常表示“停止操​​作”,在这种情况下,协程空闲。 🤔我们应该说协程暂停了吗? 哪个协程被暂停? 来自https://kotlinlang.org/docs/reference/coroutines.html 为了继续类推,await()可以是一个暂停函数(因此也可以从async {}块内调用),该例程可以暂停协程直到完成一些计算并返回其结果: async { // Here I call it the outer async coroutine ... // Here I call computation the inner coroutine val result = computation.await() ... } says它说“挂起协程直到完成计算”,但是协程就像轻量级线程。因此,如果协程被挂起,如何进行计算? 我们看到await被调用了computation,所以可能是asyncreturn Deferred,这意味着它可以启动另一个协程 fun computation(): Deferred<Boolean> { return async { true } } …



5
使用Kotlin和Android,“信息不足以推断参数T”
我正在尝试使用Kotlin在Android应用程序中复制以下ListView:https : //github.com/bidrohi/KotlinListView。 不幸的是我遇到错误,无法解决自己。这是我的代码: MainActivity.kt: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val listView = findViewById(R.id.list) as ListView listView.adapter = ListExampleAdapter(this) } private class ListExampleAdapter(context: Context) : BaseAdapter() { internal var sList = arrayOf("Eins", "Zwei", "Drei") private val mInflator: LayoutInflater init { this.mInflator = LayoutInflater.from(context) } override fun getCount(): Int …

13
未解决的参考:kotlinx
我正在尝试在Android Studio中试用Kotlin和Kotlin Android扩展。我已经在Ubuntu 14.04上的Android Studio v 1.5.1和OS X El Capitan上的Android Studio v 1.5.1中尝试了相同的结果。 这是我在做什么: 我安装了Kotlin插件1.0.0-beta-35950-IJ141-11 创建一个新的空白Android项目 将MainActivity文件转换为Kotlin(通过help-> findaction->将文件转换为kotlin) 为Kotlin配置项目 然后,我进入生成的content_main.xml文件,并为“ Hello World!”添加一个ID(Hello)。TextView。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/hello" /> </RelativeLayout> 然后,在转换后的MainActivity中,添加一行以设置TextView。(如下所示)。然后,Android Studio提示我(通过alt输入)插入此行(也如下所示) import kotlinx.android.synthetic.main.content_main.* …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.