Tag: 安卓

如何在Kotlin中“锁定”静态对象

那么,我有一个情况,在Class A我得到“X数据”。 我想在Object X存储这个“X DATA”一次,然后确保这个对象的值是不可能改变的。 (设置一次,忘记它)。 我的方法是: object X { var attribute1: String var attribute2: String } 显然,由于对象属性是var所以将来可以改变。 我怎么能避免这个? 有没有一种方法来分配值(在一段时间..),然后锁定对象,直到应用程序退出?

kotlin todo-mvp使用framents

我正在使用谷歌示例中的todo-mvp-sample,想知道为什么开发者实现了统计活动(为什么使用活动而不是替换片段) 她有一个代码片段:来自TasksActivity private fun setupDrawerContent(navigationView: NavigationView) { navigationView.setNavigationItemSelectedListener { menuItem -> if (menuItem.itemId == R.id.statistics_navigation_menu_item) { val intent = Intent(this@TasksActivity, StatisticsActivity::class.java) startActivity(intent) } // Close the navigation drawer when an item is selected. menuItem.isChecked = true drawerLayout.closeDrawers() true } } 并在StatisticsActivty重复代码: private fun setupDrawerContent(navigationView: NavigationView) { navigationView.setNavigationItemSelectedListener { menuItem -> if (menuItem.itemId == R.id.list_navigation_menu_item) { […]

在Kotlin Android中将数据添加到RecyclerView

我使用Volley阅读JSON API。 一切都在为此而努力。 当我看到从API获得的到达时间时,有不同的是我期望的。 JSON输出 10-24 08:34:17.831 4671-4671/org.sherman.tony.nexttrain I/System.out: ARRIVAL TIME = 1508849280 10-24 08:34:17.831 4671-4671/org.sherman.tony.nexttrain I/System.out: ARRIVAL TIME = 1508850180 10-24 08:34:17.831 4671-4671/org.sherman.tony.nexttrain I/System.out: ARRIVAL TIME = 1508850600 10-24 08:34:17.831 4671-4671/org.sherman.tony.nexttrain I/System.out: ARRIVAL TIME = 1508848920 10-24 08:34:17.832 4671-4671/org.sherman.tony.nexttrain I/System.out: ARRIVAL TIME = 1508851500 10-24 08:34:17.832 4671-4671/org.sherman.tony.nexttrain I/System.out: ARRIVAL TIME = 1508851980 10-24 08:34:17.832 […]

如何使用Firebase 1.0.2忽略对象模型的新字段

我正在使用Firebase依赖关系的最新版本,这是1.0.2,我有问题得到正确解析我的pojos。 事情是,在任何时候架构可以改变,但我不希望我的应用程序崩溃与此: D / AndroidRuntime(14097):关闭虚拟机W / dalvikvm(14097):threadid = 1:线程退出与未捕获的exception(组= 0x40a451f8)E / AndroidRuntime(14097):致命例外:主E / AndroidRuntime(14097):com .firebase.client.FirebaseException:无法popup键入E / AndroidRuntime(14097):at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:213) 查看依赖关系树,我发现Firebase使用的是Jackson mapper 1.9.7,所以注解@JsonIgnoreProperties(ignoreUnknown = true”)不是一个选项,而且对象映射器被封装在这个Firebase对象中,所以我不能配置DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES属性( DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES为jackson1.9和之前)。 有什么办法设置这个属性,无论是作为一个类级别的注释或配置映射器或任何其他机制? 最好的解决方案是,Firebase 1.0.3开始使用Jackson 2.0,但不知道这是否是他们现在关心的事情。 注意:我已经考虑过排除传递的Jackson 1.9.7依赖,并添加Jackson 2.0,以便我可以访问这个ignoreUnknown特性,但是我不认为这是一个可行的选择,因为我会改变市长版本。

kotlin中可重复的值types

我试图从api中恢复电动滑板车的值,但api返回可观察types,我不明白为什么值得重复的值应该重复。 当应用程序从另一个字段中恢复一个值时,他们订阅其余的也会改变。 主要活动 private lateinit var api: MijiaBluetoothApi val POS_BATTERY: Int = 0x22 val COUNT_BATTERY: Int = 1 val POS_SERIAL: Int = 0x10 val COUNT_SERIAL: Int = 7 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var bateryText: TextView = findViewById(R.id.bateryText) as TextView var mileageText: TextView = findViewById(R.id.mileageText) as TextView var serialText: TextView = findViewById(R.id.serialText) as […]

将RealmObject类转换为Kotlin时编译时错误

这是我的原始RealmObject Parceler注释。 @Parcel(implementations = {AlbumRealmProxy.class}, value = Parcel.Serialization.BEAN, analyze = {Album.class}) public class Album extends RealmObject { @PrimaryKey @SerializedName(“id”) private String id; @SerializedName(“artist_id”) private String artistId; @SerializedName(“title”) private String title; @SerializedName(“artist_name”) private String artist; @SerializedName(“images”) private RealmList artwork; @SerializedName(“tracks”) private RealmList tracks; @SerializedName(“artist_bio”) private String artistBio; @ParcelPropertyConverter(RealmListParcelConverter.class) public void setArtwork(RealmList artwork) { this.artwork = artwork; […]

具有派生属性的Kotlin数据类

我有一堂课是两堂课的总结。 我把这个类做成了一个数据类,如下所示 data class Device(private val deviceModel: DeviceModel, private val deviceStatus: DeviceStatusModel) { val name = deviceModel.name ?: “Unknown” val id = deviceModel.id ?: -1 val mode = when(deviceStatus.mode) { 1 -> DEVICE_MODE_MANUAL 2 -> DEVICE_MODE_AUTO 3 -> DEVICE_MODE_OVERRIDE else -> DEVICE_MODE_MANUAL } val strength = deviceStatus.strength ?: 0 } 但是,当我打印这个类时,它不打印名称,ID,模式和强度属性,它打印设备型号和设备状态。 有没有办法让类生成toString基于派生属性而不是构造函数?

在kotlin android tailrec函数返回0

我试图用这个教程YouTube教程 。 我有一个function如下: fun fact(x:Int):Int{ tailrec fun factTail(y:Int, z:Int):Int{ return if(y == 0) { z } else { factTail(y – 1, y * z) } } return factTail(x,1) } 这个函数在oncreate中被调用为: var abc = fact(5) Log.i(TAG, “5! = $abc”) 当应用输出日志时,显示如下: I/MainActivity: 5! = 0 任何人都可以指出这里有什么问题。

Kotlin合并了两个可空的可变列表

val mutableList1: MutableList? val mutableList2: MutableList? addAll方法可以用来合并可空的可变列表,但是,在这里它会引发我编译时错误。 例: val map1 = listOne?.map { TeamInvitationData(it) } val map2 = listTwo?.map { TeamInvitationData(it) } map1.addAll(map2) types接口失败,请尝试显式指定types参数。 在这里任何方式可以合并这两个数组,事先感谢。

从活动Kotlin获得额外的字符串

我想从意图的另一个活动中获得额外的字符串。 这是创建我的意图的方式 val intent = Intent(this, Main2Activity::class.java) intent.putExtra(“samplename”, “abd”) startActivity(intent) 我怎样才能在另一个活动中获得这个意图的价值