我想在我的Android应用程序中使用Kotlin复制以下ListView: https : //github.com/bidrohi/KotlinListView 。 不幸的是,我得到一个错误,我无法自己解决。 这是我的代码: MainActivity.kt: override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val listView = findViewById(R.id.list) as ListView listView.adapter = ListExampleAdapter(this) } private class ListExampleAdapter(context: Context) : BaseAdapter() { internal var sList = arrayOf("Eins", "Zwei", "Drei") private val mInflator: LayoutInflater init { this.mInflator = LayoutInflater.from(context) } override fun getCount(): Int { return […]
有没有可能从Java代码访问扩展函数? 我在Kotlin文件中定义了扩展function。 package com.test.extensions import com.test.model.MyModel /** * */ public fun MyModel.bar(): Int { return this.name.length() } MyModel是一个(生成的)java类。 现在,我想在我的正常的java代码中访问它: MyModel model = new MyModel(); model.bar(); 但是,这是行不通的。 IDE将无法识别bar()方法,编译失败。 kotlin的静态函数使用了什么工作: public fun bar(): Int { return 2*2 } 通过使用import com.test.extensions.ExtensionsPackage所以我的IDE似乎configuration正确。 我search了kotlin文档中的整个Java-interop文件,也search了很多,但是我找不到它。 我究竟做错了什么? 这甚至有可能吗?
Kotlin协同程序可以在生产中使用吗?他们的实验状态是什么意思?
如何使用带Fragment的Kotlin Android扩展? 如果我在onCreateView()使用它们,我得到这个NullPointerExceptionexception: 导致:java.lang.NullPointerException:试图调用虚拟方法'android.view.View android.view.View.findViewById(int)'对空引用 这里是片段代码: package com.obaied.testrun.Fragment import android.os.Bundle import android.support.v4.app.Fragment import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.obaied.acaan.R import kotlinx.android.synthetic.main.fragment_card_selector.* public class CardSelectorFragment : Fragment() { val TAG = javaClass.canonicalName companion object { fun newInstance(): CardSelectorFragment { return CardSelectorFragment() } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { […]
当我试图在Kotlin中编写一个与try-with-resources代码相同的代码时,它并不适用于我。 我尝试了以下的不同变化: try (writer = OutputStreamWriter(r.getOutputStream())) { // … } 但是都没有用。 有谁知道应该用什么来代替? 显然Kotlin语法没有这样的构造的定义 ,但可能是我失去了一些东西。 它为try块定义语法如下: try : "try" block catchBlock* finallyBlock?;
我正尝试在Android Studio中尝试Kotlin和Kotlin Android扩展。 我已经在Ubuntu 14.04上的Android Studio v 1.5.1以及OS X El Capitan上的Android Studio v 1.5.1上尝试了这一点,获得了相同的结果。 这是我在做什么: 我安装了Kotlin插件1.0.0-beta-35950-IJ141-11 创build一个新的空白Android项目 将MainActivity文件转换为Kotlin(通过help-> findaction->将文件转换为kotlin) 为Kotlinconfiguration项目 然后我进入生成的content_main.xml文件并为“Hello World!”添加一个id(hello)。 TextView中。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/hello" /> </RelativeLayout> 然后在转换的MainActivity中添加一行来设置TextView。 (如下所示)。 然后Android Studio会提示我(通过alt-enter)插入这一行(如下所示) import kotlinx.android.synthetic.main.content_main.* 所以在这一点上一切似乎都很好 但是当我尝试编译这个我得到 […]
我有以下使用新的数据绑定库Java编写的片段类 import com.example.app.databinding.FragmentDataBdinding; public class DataFragment extends Fragment { @Nullable private FragmentDataBinding mBinding; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false); return mBinding.getRoot(); } } 它编译和运行良好。 我试图在Kotlin中重写它,并提出如下: import com.example.app.databinding.FragmentDataBdinding class ProfileFragment : Fragment() { private var mBinding: FragmentDataBinding? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, […]
“伴侣对象”的意图是什么? 到目前为止,我一直在使用它来替代Java的static当我需要它。 我很困惑: 为什么叫“同伴”? 这是否意味着要创build多个静态属性,我必须在companion object块内组合在一起? 要立即创build一个范围为一个类的单例实例,我经常写 : companion object { val singleton by lazy { … } } 这似乎是一个单一的做法。 什么是更好的方法?
Kotlin没有Java中使用的静态字段的相同概念。 在Java中,一般公认的logging方式是: public class Foo { private static final Logger LOG = LoggerFactory.getLogger(Foo.class); } 问题是在Kotlin中执行日志logging的惯用方法是什么?
我刚开始使用Android Studio 3.0.0,但每次尝试构build我的项目时都会出现此错误: Error:Circular dependency between the following tasks: :app:compileDebugKotlin +— :app:dataBindingExportBuildInfoDebug | \— :app:compileDebugKotlin (*) \— :app:kaptDebugKotlin \— :app:dataBindingExportBuildInfoDebug (*) (*) – details omitted (listed previously) 我在用 kapt "com.android.databinding:compiler:2.2.0" 在我使用之前 androidProcessor "com.android.databinding:compiler:2.2.0" 它工作得很好…我做错了什么? 谢谢!