Tag: 安卓

如何使用kotlin在RecyclerView.ViewHolder中绑定视图

令我困惑的是如何在Recycleler.ViewHolder绑定视图。 这是我简单的适配器,如何将它转换为kotlin使用kotlin-android-extensions没有ButterKnife ? public class RoomAdapter extends RecyclerView.Adapter<ViewHolder> { private OnItemClickListener mListener; private List<LocationBean> mRooms; static class ViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.tv_title) TextView tvTitle; public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } public void setData(List<LocationBean> rooms) { mRooms = rooms; notifyDataSetChanged(); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) […]

Android Kotlin – 无法调用onNavigationItemSelected方法

我在Kotlin做了抽屉菜单,我想用这个菜单项。 在java中,我正在调用onNavigationItemSelected方法,但是当我想在Kotlin中使用它时,它不会出现。 这是我的代码: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/drawerLayout" tools:context="com.example.zamknijryjx.liobrus.UserActivity"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/imie" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="40dp" android:text="Imie" android:textSize="50sp" android:textColor="@color/black" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> <android.support.design.widget.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" app:menu="@menu/navigation_menu" android:layout_gravity="start" app:headerLayout="@layout/navigation_header"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 这里是navigation_menu.xml : <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_home" android:title="Home"/> <item android:id="@+id/nav_sprawdziany" android:title="Sprawdziany"/> <item android:id="@+id/nav_prace" android:title="Prace klasowe"/> </menu> […]

如何在Kotlin中使用KeyEvent

这是我的kotlin / java代码。 我想从中学习。 当我按下Android键盘的“确定”按钮,我想我的应用程序做同样的事情,当我推我的按钮与android:onClick =“onAnswerClick” 我知道我的代码不是很好。 你不能帮助我知道如何优化它 我不知道它是一个好主意,学习在Android上与kotlin代码。 import android.annotation.SuppressLint import android.app.Activity import android.os.Bundle import android.view.KeyEvent import android.view.View import android.view.inputmethod.EditorInfo import android.widget.* import android.widget.AdapterView import android.widget.Toast import android.widget.Spinner import kotlinx.android.synthetic.main.activity_main.* import android.widget.EditText class MainActivity : Activity() { class Calculateurs{ fun aire(r: Double): Double{ return 3.141592 * r * r } fun circonference(r: Double): Double{ […]

Kotlin:无法返回派生类型

我有一个android项目下面的kotlin函数。 我试图返回一个电影或TvShow“碎片”,这是从基地的Android“片段”类派生。 这段代码在java代码中工作,但是一旦转换成Kotlin,它就不再起作用了。 我得到的错误是MovieFragment类型不匹配,因为它是类型“MoviesFragment”而不是“片段?”。 override fun getItem(position: Int): Fragment? { when (position) { 0 -> { val moviesFragment: MoviesFragment = MoviesFragment() return moviesFragment } 1 -> { val tvShowFragment: TvShowFragment = TvShowFragment() return tvShowFragment } else -> { return null } } } 提前致谢!!

如何在Kotlin上使用Firebase UI数据库?

val adapter = FirebaseRecyclerAdapter<Discount, Holder>( Discount::class.java, R.layout.fragment_main_day_item, Holder::class.java, FirebaseDatabase.getInstance().getReference() ) { override fun populateViewHolder(holder: Holder, dis: Discount, pos: Int){ } } 文档在这里 我如何使用Kotlin来处理这个问题 编辑 val mAdapter = object : FirebaseRecyclerAdapter<Chat, ChatHolder>( Chat::class.java, R.layout.fragment_main_day_item, ChatHolder::class.java, ref) { public override fun populateViewHolder(holder: ChatHolder, chat: Chat, position: Int) { } } 我把java转换成了kotlin,它可以工作。

FragmentManager在Kotlin中抛出IllegalArgumentException

我在我的Fragment有以下方法 override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) val fm = childFragmentManager var prefsFragment: PrefsFragment? = fm.findFragmentByTag(tableName) as PrefsFragment? if (prefsFragment == null) { prefsFragment = PrefsFragment() val ft = fm.beginTransaction() ft.add(R.id.parameters_fragment_container, prefsFragment, tableName) ft.commit() fm.executePendingTransactions() } } 我不得不说这是Java-> Kotlin automagic翻译器对我以前的Java代码所做的事情(除了在我找到PrefsFragment标签的行尾之外),所以它可能不完全是犹太教。 我正在学习Kotlin。 现在,当我调用executePendingTransactions() ,我的应用程序崩溃抛出java.lang.IllegalArgumentException异常错误消息“参数指定为非null为空:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数savedInstanceState”。 现在,是的,savedInstanceState实际上是空的,但是它与显然抛出异常的调用有什么关系呢? 我确信没有其他值/变量是空的,所以我相信错误信息…但是为什么? 编辑这里是堆栈跟踪,和给我做恶梦的源代码 https://gist.github.com/Morpheu5/8ec7e2064f53679405769b43c64f2cb7 E/AndroidRuntime: FATAL EXCEPTION: main Process: net.morpheu5.bleedingscorecalculator, PID: 2685 […]

在Android库中使用Kotlin作为AAR分发

甚至可以用Kotlin写一个库吗? 我看到的问题是,它将依赖kotlin-stdlib和kotlin-runtime specyfic版本,并强制库的用户使用相同的版本。 我正在考虑使用jarjar重新包装那些,但是,如何将这些包括在fatjar类型的分布? 在解压后的aar中,我看到了/libs目录 – 有没有办法使用它?

包含Android扩展的Kotlin类不是建立在随后的构建上的

我最近决定将我们公司的android应用程序移植到kotlin。 它运作良好,但是,当我使用任何kotlin扩展,我得到一个奇怪的行为。 我注意到,任何使用扩展的类(不论是anko,还是自定义的扩展)都只是第一次构建而成,并且在其后的每个构建中,它都不在其他类中。 不使用扩展的Kotlin类始终是正确构建的。 每当我运行该程序(在后续的构建中,第一个运行没有问题),就会导致NoClassDefFoundError。 我已经尝试了一切,我开始有点绝望…这是我的整个项目的build.gradle: buildscript { ext.kotlin_version = '1.0.1-2' ext.support_version = '23.3.0' ext.anko_version = '0.8.3' repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.google.gms:google-services:2.0.0-alpha6' classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.7' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { } 这里是我尝试使用kotlin的模块的build.gradle […]

WeakReference不在Kotlin工作

我在Kotlin中实现了一个AsyncTask ,并且我需要一个在onPostExecute()方法中运行的回调WeakReference 。 我在调用execute()之前设置了侦听器引用,但是一旦onPostExecute() , WeakReference值为null 。 class PhotoRotationTask(uri: Uri, filePath: String, resolver: ContentResolver) : AsyncTask<Int, Int, Int>() { private var weakRef : WeakReference<OnBitmapProcessedListener>? = null var sourceUri : Uri var resolver : ContentResolver var destPath: String init { this.sourceUri = uri this.resolver = resolver this.destPath = filePath } fun setOnBitmapProcessedListener(listener: OnBitmapProcessedListener){ weakRef = WeakReference(listener) […]

在Kotlin中不能使用argb color int值?

当我想为Kotlin中TextView的textColor设置动画时: val animator = ObjectAnimator.ofInt(myTextView, "textColor", 0xFF8363FF, 0xFFC953BE) 发生此错误: Error:(124, 43) None of the following functions can be called with the arguments supplied: public open fun <T : Any!> ofInt(target: TextView!, xProperty: Property<TextView!, Int!>!, yProperty: Property<TextView!, Int!>!, path: Path!): ObjectAnimator! defined in android.animation.ObjectAnimator public open fun <T : Any!> ofInt(target: TextView!, property: Property<TextView!, Int!>!, vararg […]