我试图连锁2承诺与Kovenant功能,如下所示: fun promiseFunc1() : Promise<Int, Exception> { return Promise.of(1) } fun promiseFunc2() : Promise<Int, Exception> { return Promise.of(2) } fun promiseCaller() { promiseFunc1() then { it: Int -> promiseFunc2() } then { it: Int -> // Compilation error: it is not not an integer } } Kovenant似乎回报了价值。 我如何从promiseFunc2得到实际的整数? 我得到的唯一解决方案是使用get()函数,如下所示: promiseFunc1() then { it: Int -> […]
好奇如果有人在双Xeon机器上进行Android Studio开发。 我想知道如果额外的CPU提供了一个戏剧性或可见(50%或更多)的建设性能提高。
当使用ClosedRange<T>时,Hibernate抛出异常 我知道走动是使用@Entity或@Embeddable创建自己的Range类,但没有其他解决方案? 例外: org.hibernate.MappingException: Could not determine type for: kotlin.ranges.IntRange, at table: Foo, for columns: [org.hibernate.mapping.Column(myRange)] 实体: @Entity class Foo ( @Id @GeneratedValue var id: Long? = null, var myRange: IntRange = 0..0 )
我有这个代码在应用程序启动时执行 val resolver = InternalFileHandleResolver() asset.setLoader(FreeTypeFontGenerator::class.java, FreeTypeFontGeneratorLoader(resolver)) asset.setLoader(BitmapFont::class.java, ".ttf", FreetypeFontLoader(resolver)) val menuFont = FreeTypeFontLoaderParameter() menuFont.fontFileName = FONT_FN menuFont.fontParameters.size = 10 asset.load(FONT_MENU, BitmapFont::class.java, menuFont) val gameFont = FreeTypeFontLoaderParameter() gameFont.fontFileName = FONT_FN gameFont.fontParameters.size = 15 asset.load(FONT_GAME, BitmapFont::class.java, gameFont) asset.finishLoading() asset是我的AssetManager ,常量是: const val FONT_FN = "others/font.ttf" const val FONT_MENU = "FONT_MENU" const val FONT_GAME = "FONT_GAME" 现在我有这些帮手功能: […]
我正在尝试在不使用任何库的情况下向BottomNavigationView项目添加徽章,但不知何故BottomNavigationView未显示徽章(custom_view) main_view.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main" 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" tools:context="com.hrskrs.test.MainActivity"> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:itemBackground="@color/colorPrimary" app:itemIconTint="@color/colorAccent" app:itemTextColor="@color/colorPrimaryDark" app:menu="@menu/bottom_navigation_main" /> </RelativeLayout> bottom_navigation_menu.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/item_test" android:icon="@mipmap/ic_launcher" android:title="action1" app:showAsAction="always" /> <item android:enabled="true" android:icon="@mipmap/ic_launcher" android:title="action2" app:showAsAction="ifRoom" /> <item android:enabled="true" android:icon="@mipmap/ic_launcher" android:title="action3" app:showAsAction="ifRoom" /> </menu> 从AppCompatActivity扩展的活动: @Override […]
this.data = source.readArrayList(data!!.javaClass.classLoader) as ArrayList<Data>? 警告未选中cast:ArrayList <(raw)Any!>! 到ArrayList? coustom数据类的数据
我正在尝试做一个弹出菜单,并根据哪个项目被点击发生的事情。 菜单项的点击监听器需要一个返回类型为Boolean的类型。 我已经给它一个返回类型,但它仍然全部显示为“期望值类型布尔值”的消息。 有人能告诉我我在这里有什么错吗? (我知道我没有做菜单点击做任何事情) val menuButton = findViewById<Button>(R.id.categoryImageButton) menuButton.setOnClickListener(View.OnClickListener { fun onClick(view: View){ val popup = PopupMenu(this,menuButton) popup.menuInflater.inflate(R.menu.popup_menu, popup.menu) popup.setOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener { **fun onMenuItemClick(item: MenuItem): Boolean { when (item.itemId) { R.id.techItem -> { return true } R.id.clothItem -> { return true } else -> return false } }** }) } })
我有以下组件: class ChildModel:ViewModel() { //or it may be an POJO, it does not matter val value …. } class ParentView: View() { … //Maybe this should be implemented into ParentViewModel val childrenList:List<ChildModel> fun addFragmentAsChild() { //should: // 1. display fragment within ParentView // 2. add fragment into modelList (or fragmentList – it does not matter […]
我有一个表达式如下所示: when(foo.toString()){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->foo.toString()[0]//problematic method call duplication } 现在,我不想调用foo.toString()两次,但我也希望这是一个单一的表达式。 有没有一种方便的方式来访问我传递给else表达式的值,比如在语言的其他地方找到的it或this@语法? 我目前正在使用以下解决方法: with(foo.toString()){ when(this){ "" ->'A' "HELLO" ->'B' "GOODBYE"->'C' else ->this[0] } } 但是这引入了另一个块,并且比我想要的更不可读。 有更好的解决方案吗?
我试图在单元测试之前的beforeAll / afterAll类型设置中做一个标准,但是有一些问题。 这似乎是interceptSpec功能是我想要的,文件明确提到这是很好的清理数据库资源,但我找不到一个很好的例子。 代码如下: class MyTest : StringSpec() { lateinit var foo: String override fun interceptSpec(context: Spec, spec: () -> Unit) { foo = "foo" println("before spec – $foo") spec() println("after spec – $foo") } init { "some test" { println("inside test – $foo") } } } 这导致下面的输出: before spec – foo kotlin.UninitializedPropertyAccessException: lateinit […]