Tag: kotlin android extensions

扩展MockitovalidationKotlin不工作(以“kotlin方式”)

我想扩展validation,以允许在同一模拟对象检查多个命令,但它不工作,它编译,但运行它不会运行每个命令相同。 只是想避免写更多的东西,如: Mockito.verify(mockedView).initViews() Mockito.verify(mockedView).setImage(user.photoUrl) 并写更多的像: Mockito.verify(mockedView){ initViews() setImage(user.photoUrl) } 第一次尝试: @Test fun onCreate_loadLoginInfo() { val user = MockUser.user() presenter.onCreate(mockedView, user) Mockito.myVerify(mockedView) { initViews() setImage(user.photoUrl) setName(user.name) setEmail(user.email) } } class Mockito { companion object } fun Mockito.Companion.myVerify(obj: T, func: T.() -> Unit) { org.mockito.Mockito.verify(obj).func() } 第二次尝试: @Test fun onCreate_loadLoginInfo() { val user = MockUser.user() presenter.onCreate(mockedView, user) […]

DialogFragment中的Kotlin合成和自定义布局

比方说,我有这样的布局: 我在DialogFragment中使用它: class DepartmentChoiceDialog : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = AlertDialog.Builder(activity) builder.setTitle(R.string.choose_or_create_dep) .setView(R.layout.department_chooser_dialog) .setNegativeButton(android.R.string.cancel, { d, i -> d.cancel() }) return builder.create() } } 如果我参考使用合成的小部件: override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) dep_list.layoutManager = LinearLayoutManager(activity) dep_list.itemAnimator = DefaultItemAnimator() dep_list.setHasFixedSize(true) } 我在运行时遇到这个错误: java.lang.NullPointerException:尝试在MyDialog的空对象引用上调用虚拟方法’android.view.View android.view.View.findViewById(int)’._ $ _ findCachedViewById(DepartmentChoiceDialog.kt:0) 我不明白如何在DialogFragment的情况下使用合成。 它在Fragment和Activity中工作正常。

Kotlin:如何将数据从RecyclerView适配器发送到片段

我是新来的Android和新的Kotlin(来自iOS Swift开发)。 我有一个活动,有一个片段,里面的片段是一个RecyclerView。 当用户点击RecyclerView中的一行时,我想显示一个对话框并采取一些行动。 在适配器中,我有CustomViewHolder和onClickListener。 从那里,我可以捕捉用户轻松点击的行。 但是,如何将这些信息传递回片段,以便我可以采取行动/显示一个对话框? 谢谢!

Kotlin Android扩展和菜单

有没有办法使用合成属性,而不是使用findItem方法来访问fragment_photo_gallery布局中定义的menu_item_search菜单项? override fun onCreateOptionsMenu(menu: Menu, menuInflater: MenuInflater) { super.onCreateOptionsMenu(menu, menuInflater) menuInflater.inflate(R.menu.fragment_photo_gallery, menu) //is there a way to access searchItem using synthetic properties? val searchItem = menu.findItem(R.id.menu_item_search) }

Kotlin的扩展

我想使用我的自定义类的variables和方法的扩展。 我正在尝试下面的代码,但得到错误 本地扩展属性是不允许的 val Double.km: Double get() = this * 1000 val Double.m: Double get() = this val Double.cm: Double get() = this / 100 val Double.mm: Double get() = this / 1000 val Double.ft: Double get() = this / 3.28084 val oneInch = 25.4.mm println(“One inch is $oneInch meters”) // prints “One inch is […]

如何将活动中的值传递给kotlin中的另一个活动

大家早上好, 正如我正在学习Kotlin的Android开发,我现在正在尝试像Hello world这样的基本程序,以及如何从一个活动导航到另一个活动,这里没有问题 我的担心是当我从一个活动转移到另一个活动,它工作正常,但我不知道如何传递活动之间的值 我厌倦了在一个活动中设置值,并在另一个活动中检索到它不起作用 请参阅下面的代码片段 这是我的主要活动,我从编辑文本中将用户名和密码设置为意图 class MainActivity : AppCompatActivity() { val userName = null val password = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { val intent = Intent(this@MainActivity,SecondActivity::class.java); var userName = username.textø var password = password_field.text intent.putExtra(“Username”, userName) intent.putExtra(“Password”, password) startActivity(intent); } } } 这是我的第二个活动,我必须从主要活动接收价值 SecondActivity:AppCompatActivity(){ override fun onCreate(savedInstanceState: Bundle?) […]

在kotlin的for循环中使用when()。 when语句下面的行不被执行

我在Android项目中编码Kotlin。 我在for()循环中使用了一个when()语句。 在循环的每次迭代中需要执行的w​​hen()语句的下面有一些行,但是会跳过,并且控制流回到循环的下一个循环。 这是我所做的简化版本。 for (i : Int in 0..10) { val data = Data() when(i) { 0 -> data.att1 = “sample0” 1 -> data.att1 = “sample1” 2 -> data.att1 = “sample2” .. .. } dataArray.add(i, data) // LINE NOT EXECUTED } 我对Kotlin有点新鲜,所以我不确定这是否是Kotlin的正常行为。 先谢谢您的帮助。

如何禁用Android Kotlin中的点按钮

我是新的Android Studio – Kotlin,我用数字和数学运算符与小数点(.dot按钮)构建一个应用程序在我的数学计算器应用程序,如果按下点按钮,该按钮应该禁用或不输入第二时间。 如果按下多次,我想禁用或停止打印点按钮(。)。 这是我的代码 Acitivity.kt文件 package com.tripbegins.calculator import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import com.tripbegins.calculator.R.id.* import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } var emptyText = true fun numberEvents(view: View) { var checkButton:Boolean = false if(emptyText){ viewResult.setText(“”) } emptyText = false var button = […]

用Kotlin在android中声明variablestypes的正确方法是什么?

我想声明一些variablestypes的gatter和setter模型。 我可以声明简单和干净的代码,如在Java中? private String firstName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } 因为当它转换成Kotlin它看起来像: private var firstName: String? = null fun getfirstName(): String { return firstName } fun setfirstName(firstName: String) { this.firstName = firstName } 什么是正确和最清洁的方式?

Kotlin – 安全呼叫运营商的链接。 不必要的话务员

以下面使用安全调用操作符(?。)的示例: class Sample { class A( val sampleB: B? = B() ) class B( val sampleC: C = C() ) class C( val sampleInt: Int = 1 ) fun test() { val intInC: Int? = A().sampleB?.sampleC?.sampleInt } } 我知道我们需要一个安全的调用操作符sampleB。 但是为什么我们需要在sampleC上安全的调用操作符。 如果我删除该运算符,它不会编译。 基于我对运算符的理解,如果sampleB为空,则该行将返回null。 如果sampleB不为null,我们可以确定sampleC不是null,根据它的types。 但为什么Kotlin强制安全调用operatorC?