Tag: android

Kotlin中AsyncTask的子类 – 无法在onPostExecute中使用主构造函数参数

我有一个在Kotlin中实现的AsyncTask的子类: class SignUpTask(responseHandler: SignUpTaskResponseHandler): AsyncTask<Agent, Void, Boolean>() { override fun doInBackground(vararg params: Agent?): Boolean { // Some awesome code return true } override fun onPostExecute(result: Boolean?) { result?.let { if (it) { responseHandler.agentCreationSucceeded() } else { // agent creation failed } } } } 问题是 – 我在这条线上得到错误responseHandler.agentCreationSucceeded() : 未解决的引用:responseHandler 我可以通过显式声明一个属性并将其赋值给构造函数中传递的参数来使其工作: class SignUpTask(responseHandler: SignUpTaskResponseHandler): AsyncTask<Agent, Void, […]

获取位置Android Kotlin

我最近添加了获取位置功能。 当我尝试显示经度和纬度时,它返回零。 这是我的LocationListener类: inner class MylocationListener: LocationListener { constructor():super(){ mylocation= Location("me") mylocation!!.longitude mylocation!!.latitude } override fun onLocationChanged(location: Location?) { mylocation=location } override fun onStatusChanged(p0: String?, p1: Int, p2: Bundle?) {} override fun onProviderEnabled(p0: String?) {} override fun onProviderDisabled(p0: String?) {} } 而这个我的GetUserLocation函数: fun GetUserLocation(){ var mylocation= MylocationListener() var locationManager=getSystemService(Context.LOCATION_SERVICE) as LocationManager locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0.1f,mylocation) } 而这个函数返回我的经度和纬度: fun […]

如何使用Kotlin的自定义适配器为列表视图设置OnItemClickListener

我使用我的Android应用程序列表视图的自定义适配器。 我不知道如何设置监听器的项目点击。 我使用Kotlin作为我的应用程序。 这是我的适配器布局。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <CheckBox android:id="@+id/cbx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <TextView android:id="@+id/txtNameNote" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_toRightOf="@+id/cbx" /> <TextView android:id="@+id/txtPercent" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="TextView" android:layout_toRightOf="@+id/cbx" android:layout_below="@+id/txtNameNote" /> </RelativeLayout> </LinearLayout> 这是我的适配器代码 class CustomAdapter(internal var context: Context, resource: Int, internal var listNote: ArrayList<Note>) : ArrayAdapter<Note>(context, resource, listNote) { […]

Kotlin / Android应用程序 – 从外部活动更改视图元素

我正在使用kotlin lang来创建我的Android应用程序。 我想创建一个对象(单身人士),专门用于动态地(如按钮等)模仿我的主要活动的视图组件,并将被我的主要活动本身使用。 出现了一些问题。 首先,对象是(当然)不是活动类型,所以我不能使用例如findViewById和其他活动的功能等我试图通过传递主要活动的对象的构造函数来解决这个问题,但它是不允许的 – 因为对象不能他们的构造函数。 此外,我不知道,如果这个应用程序设计是可以接受的,至少有良好的做法。 如果不是真的 – 我应该使用什么样的设计模式来分离如何改变布局的逻辑和只修改视图元素的代码? 提前感谢您的任何建议。

Kotlin – 属性必须被初始化或者是抽象的,即使有一个init()函数

我已经使用Android Studio 3.0将此代码从Java转换为Kotlin internal var background: Drawable internal var xMark: Drawable private fun init() { background = ColorDrawable(Color.RED) xMark = ContextCompat.getDrawable(this@Subscriptions_main, R.drawable.delete) } 在第1和第2行,我收到错误: 财产必须被初始化或是抽象的 即使它将在init函数中初始化。 在写字: internal var background: Drawable? = null internal var xMark: Drawable? = null 一个可行和有效的解决方案? 还有其他更好的方法吗?

Kotlin和泛型混淆

我有一些泛型的Drawers : abstract class BaseGeoDrawer<KEY : Any, GEO : Any, ITEM : Any> abstract class BasePolygonDrawer<KEY : Any, ITEM : Any>: BaseGeoDrawer<KEY, Polygon, ITEM> class TeamAreaDrawer : BasePolygonDrawer<String, Team> abstract class BaseMarkerDrawer<KEY : Any, ITEM : Any> : BaseGeoDrawer<KEY, Marker, ITEM> class TeamPositionDrawer : BaseMarkerDrawer<String, Team> 然后我有一个接受这些Drawers的controller ,把它们放在一个ArrayList private val drawers = ArrayList<BaseGeoDrawer<Any, Any, Any>>() […]

IOException:AsyncTask图像下载Kotlin Android(坏文件描述符)

UPDATE 经过一些调试后,我发现在给定代码中的Catch块得到执行,没有任何异常异常。 我打印inputstream返回一些值,事件位图varibale被初始化,但一旦它执行catch块,它返回null onPostExecute方法。 找出为什么发生? 请查看studio的调试截图 结束 我正在使用Android Studio 3.0。 使用Kotlin支持创建简单的Android应用程序,该应用程序通过AsyncTask类和HTTPURLConnection类从http协议网址下载图像。 在执行AsyncTask类时,我从HTTPURLConnection对象获取http响应代码200,但是使用BitmapFactory.decodeStream(inputstream)方法解码流时将引发IOEXception。 StackTrace倾向于错误引起:android.system.ErrnoException:recvfrom失败:EBADF,在调用此BitmapFactory.decodeStream(inputstream)方法的同一行上。 override fun doInBackground(vararg args: String?): Bitmap? { var bitmap: Bitmap? = null try { val url = URL(args[0]) val connection: HttpURLConnection = url.openConnection() as HttpURLConnection connection.requestMethod = "GET" connection.connectTimeout = 10 * 60 * 60 connection.readTimeout = 10 * 60 * 60 […]

Kotlin懒惰的用法

我目前在我的应用程序中使用Realm,为了确保正确管理Realm实例,我在基本Activity中引入了一个像这样的变量: protected val realm: Realm by lazy { Realm.getDefaultInstance() } 然后在onDestroy我这样做: override fun onDestroy() { super.onDestroy() realm.close() } 然后我意识到这是一种浪费。 如果当前活动不使用领域,它将打开并立即在onDestroy关闭。 所以我更新到这个: private var usedRealm = false protected val realm: Realm by lazy { usedRealm = true Realm.getDefaultInstance() } override fun onDestroy() { super.onDestroy() if (usedRealm) { realm.close() } } 有没有办法做到这一点,没有额外的标志?

未解决的参考:createPrintDocumentAdapter(Kotlin + Android)

我试图从这个链接使用kotlin实现代码,但是当我尝试使用webView的任何方法时,我得到的错误: Error:(238, 17) Unresolved reference: webViewClient Error:(265, 43) Unresolved reference: PRINT_SERVICE Error:(268, 36) Unresolved reference: createPrintDocumentAdapter 奇怪的是,如果我注释掉代码,并运行应用程序,我使用评估表达式,我可以创建适配器实例。 有没有人有任何想法? 我也无法从webView访问方法,如webView.webViewClient 这里是上面链接中的java代码的kotlin版本 private fun doWebViewPrint() { // Create a WebView object specifically for printing val webView = WebView(this) webView.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { return false } override fun […]

如何在内存中运行编译kotlin文件的测试并检查结果?

到目前为止,我有 import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler MyProjectCompiler.initialize("SampleKtFileOutput") .packageName("com.test.sample") .compile(File(someFile.path)) .result { ktSource: String -> K2JVMCompiler() .exec(System.out, /** arguments here?*/) } 这个手动启动编译器,但我想从第一个编译器(生成kotlin源的MyProjectCompiler生成的字符串在内存中,并检查结果而不写入文件。 如果可能的话,我想包括当前类路径中的所有内容。