我已经创建了我的应用程序,其高分辨率为480×800,Pantech设备的像素为高。 我需要为G1设备转换高度和宽度。 我认为把它转换成DP将解决这个问题,并为两个设备提供相同的解决方案。 有没有简单的方法将像素转换为DP? 有什么建议么?
我开始学习Kotlin和Mockito,所以我编写了一个简单的模块来测试它。 AccountData_K.kt: open class AccountData_K { var isLogin: Boolean = false var userName: String? = null fun changeLogin() : Boolean { return !isLogin } } AccountDataMockTest_K.kt: class AccountDataMockTest_K { @Mock val accountData = AccountData_K() @Before fun setupAccountData() { MockitoAnnotations.initMocks(this) } @Test fun testNotNull() { assertNotNull(accountData) } @Test fun testIsLogin() { val result = accountData.changeLogin() assertEquals(result, […]
在kotlin-reflect ,类KParameter具有可空name ,其KDoc表示: 该参数在源代码中声明的名称;如果参数没有名称或名称在运行时不可用,则为null 。 无名参数的例子包括用于成员函数的这个实例,用于扩展函数或属性的扩展接收器, 在没有调试信息的情况下编译的Java方法的参数 等等 。 它讲述了众所周知的事实,即Java并不总是在字节码中包含参数名称,但它没有提到Kotlin类,尽管还有其他一些类。 我能否假定Kotlin编译器保留为Kotlin源中的函数声明的参数名称? (特别是,我需要构造函数参数名称)。
我需要在Kotlin中inheritanceJava文件(我的IntelliJ java项目,所以我有源代码),但他们只是使用p0,p1等variables名称实现抽象方法。 所以我认为我必须打开调试信息,但在我的IDE中调试信息已经打开。 我还必须做些什么来保存类,接口等的参数名称?
(使用kotlin)我有一个应用程序使用2个片段的设置活动。 我希望两者都能像Activity一样获得SettingsViewModel的同一个实例。 我认为有一个范围问题,我错过了。 首先,我有标准的ViewModelModule : @Module abstract class ViewModelModule { @Binds @IntoMap @ViewModelKey(SettingsViewModel::class) abstract fun bindSettingsViewModel(viewModel: SettingsViewModel): ViewModel @Binds abstract fun bindViewModelFactory(factory: MyViewModelFactory): ViewModelProvider.Factory } 我把我的活动绑定在: @Module abstract class AndroidBindingModule { @PerActivity @ContributesAndroidInjector(modules = [SettingsActivityModule::class]) abstract fun contributeSettingsActivity(): SettingsActivity } 随着所有其他的东西,这工作得很好, SettingsActivity也得到了一个SettingsActivity的实例。 SettingsActivityModule添加以下内容: @PerFragment @ContributesAndroidInjector abstract fun contributeMainSettingsFragment(): MainSettingsFragment @PerFragment @ContributesAndroidInjector abstract fun contributeDebugSettingsFragment(): DebugSettingsFragment […]
背景 在Java中,我可以使用它的标准hex值直接更改TextView的文本颜色: textView.setTextColor(0xffffffff); //white textView.setTextColor(0x00000000); //transparent textView.setTextColor(0xff000000); //black textView.setTextColor(0xff0000ff); //blue //etc… 好简单… 问题 在Kotlin上,如果我尝试写这样的东西,我得到一个奇怪的构建错误: 错误:(15,18)以下函数都不能使用提供的参数调用:public open fun setTextColor(p0:ColorStateList!):在android.widget.TextView中定义的单位public open fun setTextColor(p0:Int):Unit在android.widget.TextView中定义 我试过了 我试图通过互联网搜索这个,我看不出有什么特别的hex值。 看起来像在Java上一样: https://kotlinlang.org/docs/reference/basic-types.html 然后我决定用Java编写,转换成Kotlin。 结果在颜色值方面是非常不可读的: textView.setTextColor(-0x1) //white textView.setTextColor(0x00000000) //transparent textView.setTextColor(-0x1000000) //black textView.setTextColor(-0xffff01) //blue 对我来说,用于Kotlin的Integer的hex值似乎是有符号的,而在Java上它会自动转换为带符号的值,所以这会导致值的翻转以及需要时设置一个负号。 我能想到的唯一的东西,仍然允许阅读,就像这样: textView.setTextColor(Integer.parseUnsignedInt(“ffff0000”,16)); 但是,这有多个缺点: 这是更长的时间。 它转换一个字符串,所以效率要低得多 最重要的是:它仅适用于API 26(Android O),它目前在全球约1%的Android设备上处于活动状态。 问题 为什么会发生? 我能做些什么才能使其具有最好的可读性,而不需要字符串转换,并且可以在所有的Android版本上运行(在我的情况下是minSdkVersion 14)?
鉴于配对 val coordinates = Pair(2, 3) ,是否有可能命名每个值,所以我可以做一些像coordinates.x返回2 ? 或者是coordinates.first唯一的方法来访问第一个值?
我正在努力寻找阻止我的UI线程的具体行动,我已经尝试了几个调度运算符,但我不知道如何使其工作。 我有一个用户界面的按钮,这onClicked是开始蓝牙扫描和更新textView字符串像一个日志(它显示了在这一刻发生的事情)。 所以这是我的MainActivity: lateinit var disposable: Disposable val textDataService = TextDataService() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_scan_test) buttonScanTestStart.setOnClickListener { if (isBluetoothEnabled()) { textViewLog.text = “” buttonScanTestStop.visibility = View.VISIBLE buttonExportScanTestRaportSummary.visibility = View.GONE buttonExportScanTestRaportFull.visibility = View.GONE buttonScanTestStart.visibility = View.GONE disposable= Scanner() .discoverSingleDevice(this, ” “, textViewLog) .doOnError { setText(“General error: ${it.message ?: it::class.java}”, textViewLog) setLogText(“General error: ${it.message […]
在Kotlin中,下面的代码编译: class Foo { fun bar(foo: List): String { return “” } fun bar(foo: List): Int { return 2; } } 但是,这个代码不会: class Foo { fun bar(foo: List): String { return “” } fun bar(foo: List): String { return “2”; } } 编译这将导致以下错误: Error:(8, 5) Kotlin: Platform declaration clash: The following declarations have the same […]
使用Dagger向类中注入依赖关系的最好方法是什么,特别是像Dagger这样的零参数构造函数类,比如Activities? 匕首2可能会改善情况吗? 提前致谢。