Tag: 安卓

SocketException:sendto失败:EBADF(坏文件描述符)

我尝试从Android手机通过套接字发送数据。 我发送PDF文件到打印机进行打印。 在Java中它工作正常,但Kotlin抛出SocketException:sendto失败:EBADF(坏文件描述符),但是用Kotlin代码,打印机无论打印什么。 全堆栈跟踪: java.net.SocketException: sendto failed: EBADF (Bad file descriptor) at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:542) at libcore.io.IoBridge.sendto(IoBridge.java:511) at java.net.PlainSocketImpl.write(PlainSocketImpl.java:500) at java.net.PlainSocketImpl.-wrap1(PlainSocketImpl.java) at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266) at java.io.OutputStream.write(OutputStream.java:82) at java.io.DataOutputStream.writeBytes(DataOutputStream.java:156) at com.example.print.printerserver.connectors.OutputHelper.writeFooter(OutputHelper.java:22) at com.example.print.printerserver.connectors.PrinterConnector.fillPJL(PrinterConnector.kt:30) at com.example.print.printerserver.connectors.PrinterConnector.access$fillPJL(PrinterConnector.kt:8) at com.example.print.printerserver.connectors.PrinterConnector$print$1.subscribe(PrinterConnector.kt:17) at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39) at io.reactivex.Single.subscribe(Single.java:2779) at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) […]

Kotlin:使用自定义setter时没有lateinit的解决方法?

在我的活动中,我有一个应该是不可空的字段,并有一个自定义的setter。 我想在我的onCreate方法初始化字段,所以我添加了lateinit到我的variables声明。 但是,显然你不能这样做(目前): https : //discuss.kotlinlang.org/t/lateinit-modifier-is-not-allowed-on-custom-setter/1999 。 这些是我可以看到的解决方法: 用Java的方式来做。 使该字段可以为空并使用null初始化它。 我不想这样做。 使用types的“默认实例”初始化该字段。 这就是我目前所做的。 但是对于某些types来说这太贵了。 有人可以推荐一个更好的方法(这不涉及删除自定义设置)?

当使用AsyncTask 将Object转换为GoogleMap时,我得到java.lang.RuntimeException

我在LogCat中得到这个消息: java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:330) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:255) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:776) Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to com.google.android.gms.maps.GoogleMap 在android studio中使用Kotlin class GetDirectionsData : AsyncTask() { internal var mMap: GoogleMap? = null internal var url: String = “” internal var googleDirectionsData: […]

没有调用Android的LiveData.addSource onChanged事件

我正在使用Android Archi + Retrofit + RxAndroid在Kotlin。 我需要从服务器获取响应时更新我的​​数据对象。 但是livedata.addSource的onChanged没有调用。 我从Git代码获取帮助: – https://github.com/shahbazahmed1269/AndroidGithubIssues 这是我在Kotlin的代码: class LoginRepository : BaseRepository() { fun callLoginApi(data: HashMap): LiveData { val liveData: MutableLiveData = MutableLiveData() // val call = mApiService.getLoginUser(data) mApiService.getLoginUser(data) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { user -> liveData.value = user Log.e(“response”, user.toString()) }, { error -> liveData.value = LoginResponse(error = error.localizedMessage) Log.e(“Error”, error.message) […]

Android Studio 3.1 Canary 3 – Gradle项目同步失败

使用Android Studio 3.1 Canary 3使用Kotlin进行Android应用程序开发时,无论何时打开studio,我都会得到以下错误 Gradle项目同步失败。 基本function(如编辑调试)将无法正常工作 这不是在Android studio3.0及以上版本内置的kotlin相关的问题,但Kotlin插件的

运行时权限请求不起作用

我正在尝试使用Kotlin的“运行时”权限来运行我的第一个Android应用程序,根据我对此示例的理解,但是权限请求对话框从不出现。 在提到的参考示例中编写Java代码的Kotlin等价物时,是否有任何错误? 应用程序假定在点击按钮时调用预定义的号码。 string.xml : Kotlin Call activity_main.xml MainActivity.kt : package com.example.home.kotlin import android.Manifest import android.app.AlertDialog import android.content.DialogInterface import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import android.widget.Toast class MainActivity : AppCompatActivity() { private var mCall: Button? = null private var callIntent: Intent? = null override fun onCreate(savedInstanceState: Bundle?) […]

我可以推迟使用Kotlin Android扩展适配器的视图绑定

Kotlin Android扩展提供了一种直接在Activity / fragment / Adapters中使用ID的方法。 所以我想要的是适配器的通用方式,并将绑定视图职责留给适配器的用户,而不是适配器本身。 例如 : class GenericAdapter( @LayoutRes private val layoutId: Int, private var list: List, inline private val bind: (View, T, Int) -> Unit) : RecyclerView.Adapter() { override fun onBindViewHolder(holder: InnerHolder?, position: Int) { holder?.containerView?.let { bind(holder.containerView, list[position], position) } } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): InnerHolder = InnerHolder(LayoutInflater.from(parent?.context).inflate(layoutId, […]

尝试同步gradle时无法加载类“kotlin.collections.CollectionsKT”错误

今天我开始得到错误Unable to load class ‘kotlin.collections.CollectionsKT’ (如图所示),每次我试图gradle同步我的项目。 我无法find这个错误的任何东西,唯一的解决方案似乎是禁用Intellij上的kotlin插件。 我的一些项目没有kotlin,但其他人(没有kotlin的人在尝试同步时也抛出这个错误),所以这是不可行的选择。 有没有人有任何线索可能是什么?

在Kotlin的构造函数中为参数添加一个私有修饰符有什么不同?

我不确定Kotlin编写的以下两个构造函数的区别 class ConcreteItem(val title: String) : Item() { } 和 class ConcreteItem(private val title: String) : Item() { } 正如你所看到的,唯一的区别是标题字段之前的“私人”修饰符。 它将如何影响标题领域的范围?

用Kotlin将音频保存在Firebase上

你好,我正在我的项目上录音,但我想保存这个记录在用户名和主题名称的firebase数据库我怎么能做到这一点? 我的代码是60秒的音频记录,然后停止记录。 这是我的记录保存代码。 class MainActivity : AppCompatActivity(), MediaPlayer.OnCompletionListener { lateinit var recorder: MediaRecorder lateinit var player: MediaPlayer lateinit var file: File lateinit var button1: Button lateinit var button2: Button lateinit var button3: Button lateinit var saveButton: Button lateinit var tv1: TextView lateinit var timeText : TextView lateinit var topicText: EditText var handler: Handler = Handler() […]