Kotlin:如何在事务类的上下文中运行服务方法?

我想在服务方法中定义数据库调用,但要在Transaction类的上下文中执行它们,而不在服务本身中打开连接,以便可以在同一个事务中包含多个服务调用。 我正在寻找这样的东西,但不能完全弄清楚。 class Transaction { init { /** Grab connection **/ } fun doSelect() { … } } class UserService { fun Transaction.getUser() { return doSelect() } } fun main (args: Array) { Transaction() { UserService().getUser() // INVALID … } } 有没有办法做到这一点? 我知道我可以像这样传递一个事务实例给服务: class UserService(tx: Transaction) { fun getUser() { with(tx) { doSelect() } } […]

不能在不同的模块中创建具有相同名称的私有类

Kotlin中的可见性修饰符官方文档说,标记为private包级别元素仅在声明它们的模块中才可见。 因此Module1.kt声明的类A在Module2.kt不可见。 但是,如果我尝试添加到Module2.kt它是自己的类A我得到Redeclaration: A错误。 由于我无法在Module2.kt访问Module1的A类,为什么A不是A自由使用的呢?

构造函数中的调用顺序是有保证的

假设我有一个具有主构造函数的Kotlin(data)类和一个用调用某些方法来填充主构造函数的val / vars的辅助函数(请参阅示例)。 我的问题是这些方法被调用的顺序是否有保证,即在我的例子中是否在extractNames之前总是会调用checkConsitency 。 data class LawAndOrder(val sherifs: Int, val names: List) { constructor(westerners: List) : this(sherifs = westerners.checkConsistency(), names = westerners.extractNames()) } data class Westerner(val name: String) { val isCriminal: Boolean get() = name == “Jesse James” } private fun List.checkConsistency(): Int { println(“Checking consistency”) if (isEmpty()) throw IllegalArgumentException(“Crime and chaos”) if (any […]

Android(Kotlin) – CookieHandler不能使用POST方法,但使用GET工作

我的应用程序中有两个POST方法。 一个是我把CookieHandler(代码: CookieHandler.setDefault(CookieManager()) )的CookieHandler.setDefault(CookieManager()) 。 在这个活动后,我得到了一些GET方法和cookies工作,但是当我想要使用另一个POST方法,我得到AuthFailurEerror 。 这是我的代码: LoginActivity: // this line is in onCreate method CookieHandler.setDefault(CookieManager()) private fun login2() { val req = object : StringRequest(Request.Method.POST, LOGIN_API_URL, Response.Listener { response -> Toast.makeText(this, response, Toast.LENGTH_LONG).show() val user = Intent(this, UserActivity::class.java) startActivity(user) }, Response.ErrorListener { e -> Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show() }) { public override fun getParams(): […]

在调用按钮时添加两个EditText值,并使用Kotlin显示到TextView

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val addButton: Button? = null val editText1:EditText? = null val editText2:EditText? = null var resultTextView:TextView? = null addButton?.findViewById(R.id.addButton) editText1?.findViewById(R.id.editText1) editText2?.findViewById(R.id.editText2) resultTextView?.findViewById(R.id.resultTextView) addButton?.setOnClickListener { val intent = Intent(this@MainActivity, resultTextView!!::class.java) var result = editText1?.text.toString() + editText2?.text.toString() resultTextView.text = result startActivity(intent) } } 我无法得到结果显示在我的resultTextView 。

如何在Kotlin的片段中设置微调器中的addapter?

大家好,我正在尝试创建一个片段内的微调,但我在数组适配器中出现错误我不知道它变成了红色的下划线,除此之外没有错误当我尝试微调适配器在一个活动,但工作片段它得到错误请帮助修复它谢谢 这是我的FirstFragment.kt文件: class FirstFragment : Fragment() { private var mListener: OnFragmentInteractionListener? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment return inflater!!.inflate(R.layout.fragment_first, container, false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) /*Find the id of spinner*/ val spinner = lol /*set an […]

意外的隐式转换为CharSequence:布局标签是TextView

Android Studio显示错误Unexpected implicit cast to CharSequence: layout tag was TextView此代码中的Unexpected implicit cast to CharSequence: layout tag was TextView findViewById(R.id.tv_name).text = “text” 如果我会写 (findViewById(R.id.tv_name) as TextView).text = “text” 一切安好。 问题是为什么发生这种情况? 不findViewById已经有TextViewtypes?

无法让TextArea滚动到底部

我正在使用JavaFX的Kotlin。 在以编程方式添加的TextArea中,我希望滚动条总是在添加文本时跳到底部。 为了测试这个,我写了这个代码: taConsole.text = “Running ” + pythonScriptPath // retrieve output from python script val bfr = BufferedReader(InputStreamReader(p.inputStream)) val lines = bfr.readLines() for (i in 1..10) { for (line in lines) { taConsole.appendText(“\n” + line) } } 可悲的是,我不能让它滚动到底部。 我已经尝试过了: ta.selectEnd(); ta.deselect(); dataPane.setScrollTop(Double.MAX_VALUE); 和 val caret = taConsole.selectPositionCaret(taConsole.length) 我插入他们后: appendText(“\n” + line)

枚举懒惰属性

我想知道如何处理枚举属性kotlin。 如果我们有以下结构的枚举: enum class MyEnun(var sampleObject: MyObjectType){ ONE(MyObjectType(blabla)), TWO(MyObjectType(blabla)) } 这两个MyObjectType实例是以一种懒惰的方式创建的,相反,它们将在创建枚举时创建?

如何使用振动器效果在点击按钮上振动设备? 使用Kotlin

按任何按钮时如何震动设备。 我已经使用这个代码,但没有任何影响或振动进行 //click listener imgNextBtn.setOnClickListener { val vibe:Vibrator = activity?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator vibe.vibrate(500) Utilities.alertDialog(this, activity!!, mContent!! } } 要么 //click listener imgNextBtn.setOnClickListener { val vibe:Vibrator = activity?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator var effect:VibrationEffect = VibrationEffect.createOneShot(1000, VibrationEffect.DEFAULT_AMPLITUDE); vibe.vibrate(effect) Utilities.alertDialog(this, activity!!, mContent!! } } menifest:` `