Tag: android

如何处理Android的改造反应Kotlin?

你们全部 我正在使用改进的API调用示例Android Kotlin项目。 我调用API并显示响应logcat。 但它不处理来自服务器的用户标识和数据。 所以,如果你知道的人分享你最好的经验。 val params = HashMap() params[“api_key”] = “api_key_value” params[“username”] = “abcd” params[“password”] = “1234” doApiLogin.getLogin(params).enqueue(object : Callback { override fun onResponse(call: Call?, response: Response?) { //To change body of created functions use File | Settings | File Templates. if (response != null && response.isSuccessful) { val getLoginAndRegisterResp = response.body() if […]

操作条向上导航与片段

我有一个带有三个选项卡的选项卡式的Actionbar / viewpager布局, 如A , B和C. 在选项卡C选项卡(片段),我添加另一个片段说片段D。 同 DFragment f= new DFragment(); ft.add(android.R.id.content, f, “”); ft.remove(CFragment.this); ft.addToBackStack(null); ft.commit(); 我修改DFragment的onResume中的操作栏添加按钮: ActionBar ab = getActivity().getActionBar(); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); ab.setDisplayHomeAsUpEnabled(true); ab.setDisplayShowHomeEnabled(true); 现在在DFragment中,当我按下硬件(手机)“后退”按钮时,我将选择CFragment返回到原始选项卡式(ABC)布局。 如何使用操作栏向上按钮来实现此function?

Kotlin,Proguard和lambda

我有一个整洁的function,在视图上做一些事情: fun Activity.withView(nr : Int, fn : T.()->Unit) { (findViewById(nr) as T?)?.fn() } 现在,当我在我的活动中使用这个函数时: withView(R.id.spinner_toolbar) { adapter = AdapterIndeksuDlaSpinnera(this@NewMainActivity, PlaylistIndex) …一切正常,直到我使用ProGuard。 我可以看到AdapterIndeksuDlaSpinnera正如预期的AdapterIndeksuDlaSpinnera受到了损坏,但是当程序用“无法加载类AdapterIndeksuDlaSpinnera”(同时它应该抱怨损坏的适配器名称)进行编程时失败。 我能够通过禁用所有可以在我的withView使用的适配器来创建速度解决方法 -keep class pl.qus.xenoamp.adapter.** { *; } 但我不觉得这是一个好的解决方案(我不知道其他类可以以这种方式失败!)。 所以任何人都可以解释什么是问题,我应该添加什么样的ProGuard行来解决在withView使用的其他类的类似withView ?

消息没有收到蓝牙聊天。 我的处理程序是否坏了

我正在开发Android开发项目。 蓝牙的网站,它似乎是正确的发送消息,但没有收到他们。 过去,我试图创建另一个蓝牙应用程序,当连接到设备时,系统提示我确认连接,并显示PIN码。 在当前的应用程序工作时,我从来没有得到提示。 但是,它并没有出现任何exception情况,并且消息似乎正在发送。 这是我的Thread类用于管理连接: inner class ConnectedThread(val socket:BluetoothSocket, val socketType:String) : Thread(){ val inStream = socket.inputStream val outStream = socket.outputStream init { mState = STATE_CONNECTED } override fun run() { Log.i(TAG, “BEGIN mConnectedThread”) val buffer = ByteArray(1024) var bytes:Int while (mState == STATE_CONNECTED){ try { bytes = inStream.read(buffer) mHandler.obtainMessage(Constants.MESSAGE_READ, bytes, -1, buffer) .sendToTarget() […]

将FlexBox子元素添加到FlexBox后,如何更改其宽度

我们有一个按钮和一个视图(将按钮与其他视图分开的一行)的线性布局。 我们将linearLayout以编程方式添加到flexBox元素,并将Flex上的FlexGrow设置为1f。 问题是,我不能让内部按钮匹配父线性布局的宽度,同时设置最小宽度。 当我将按钮的宽度(xml)设置为match_parent时,父元素的大小只有按钮中的文本的大小(在文本更改的情况下,它的大小要大20%左右)。 在这个例子中,setMinnimumWidth()似乎没有任何影响。 但是,当我将按钮宽度(在xml中)设置为WrapContent然后setMinimumWidth()确实工作。 该按钮显示为正确的大小,但父元素比按钮大得多(大概是为了填充flexBox行中的剩余空间。 我怎样才能让按钮和它的父母是同样的大小,同时也能够设置最小宽度? xml为我们添加的flexbox元素, 添加元素并设置宽度的代码 val button = linearLayout.findViewById(R.id.button_id) as Button button.width = width button.minimumWidth = width flexBox.addView(linearLayout) val layoutParams = linearLayout.layoutParams layoutParams.width = width linearLayout.layoutParams = layoutParams linearLayout.invalidate() linearLayout.requestLayout() 代码在kotlin。

使用Kotlin for Android进行数据绑定问题

我正在尝试使用Kotlin为我的Android项目启用数据绑定。 我有Kotlin插件启用,但我不能启用数据绑定我不断收到以下错误 Error:(66, 0) Could not find method kapt() for arguments [com.android.databinding:compiler:2.0.0-beta6] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 我有我的gradle文件中的数据绑定以下依赖关系 dependencies { … kapt ‘com.android.databinding:compiler:2.0.0-beta6’ } kapt { generateStubs = true }

如何在Android上显示“是/否”对话框?

是的,我知道有AlertDialog.Builder,但是我很震惊地知道在Android中显示对话有多困难(至少不是程序员友好的)。 我曾经是一个.NET开发人员,我想知道是否有任何与Android相当的以下内容? if (MessageBox.Show(“Sure?”, “”, MessageBoxButtons.YesNo) == DialogResult.Yes){ // Do something… }

将像素转换为dp

我已经创建了我的应用程序,其高分辨率为480×800,Pantech设备的像素为高。 我需要为G1设备转换高度和宽度。 我认为把它转换成DP将解决这个问题,并为两个设备提供相同的解决方案。 有没有简单的方法将像素转换为DP? 有什么建议么?

一个简单的kotlin类与mockito测试引起MissingMethodInvocationException

我开始学习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 for Android上使用“setTextColor(hexaValue)”,

背景 在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)?