Tag: 安卓

在android java类中使用Kotlin扩展

是否有可能在android java类中使用kotlin扩展? 例: fun String.getSomething(): String { return “something” } 那么在Java中使用它就像: String someString = “blabla”; someString.getSomething(); 这可能吗?

保持Java中的BaseActivity与Kotlin Activity兼容

我想知道是否有办法维护一个BaseActivity(Java),例如,具有Java和Kotlin活动function的BottomNavigationView。 将来我打算把(几个)Java活动变成Kotlin,因为新的活动是在Kotlin开发的。 问题在于Java能够保持BottomNavigationView正确创建,因为Kotlin扮演的是null,而BottomNavigationView是在Java环境中维护的循环之后加载的。 另一个尝试是尝试将我的Java BaseActivity转换成Kotlin,但打破了各种Java活动的操作。 class KotlinActivity : BaseActivity() { public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my_wishes_list) ButterKnife.bind(this) //bottomNavigationMenu is null and lost all configurations from the BaseActivity bottomNavigationMenu.menu.getItem(0).isChecked = true } } public class BaseActivity extends AppCompatActivity { @BindView(R.id.bottom_navigation_menu) protected BottomNavigationView bottomNavigationMenu; @Override protected void onPostCreate(@Nullable Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); setupBottomMenu(); } private […]

Kotlin lateinit属性,NPE危险?

我正在使用lateinit属性,以避免连续空检查? 运营商。 我有很多在getViews()函数中首次分配的视图属性。 如果那个函数不在那里,我的应用程序将会从一个KOTlin代码的NPE中崩溃。 在我看来,lateinit属性基本上破坏了语言的漂亮的安全function。 我知道他们是在M13中引入的,因为有更好的框架支持,但是值得吗? 还是我在这里错过了什么? 这里是代码: package com.attilapalfi.exceptional.ui import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.view.View import android.widget.Button import android.widget.ImageView import android.widget.TextView import com.attilapalfi.exceptional.R import com.attilapalfi.exceptional.dependency_injection.Injector import com.attilapalfi.exceptional.model.Exception import com.attilapalfi.exceptional.model.ExceptionType import com.attilapalfi.exceptional.model.Friend import com.attilapalfi.exceptional.persistence.* import com.attilapalfi.exceptional.rest.ExceptionRestConnector import com.attilapalfi.exceptional.ui.helpers.ViewHelper import com.attilapalfi.exceptional.ui.question_views.QuestionYesNoClickListener import com.google.android.gms.maps.MapView import java.math.BigInteger import javax.inject.Inject public class ShowNotificationActivity : AppCompatActivity(), QuestionChangeListener { @Inject lateinit […]

Kotlin中的OnclickListener方法之间的区别

我正在学习Kotlin。 在此之前,我曾与Java的Android开发工作。 Kotlin是一门伟大的语言学习。 我在使用setOnClickListener(View.OnClickListener) 。 我已经看到了Android Studio的两个提示。 我知道如何工作或定义他们两个。 实现OnClickListerner的第一种方法 send_button.setOnClickListener(object : View.OnClickListener{ override fun onClick(p0: View?) { TODO(“not implemented”) //To change body of created functions use File | Settings | File Templates. } }) 这是实现OnClickListener的第二种方式 send_button.setOnClickListener { TODO(“not implemented”) //To change body of created functions use File | Settings | File Templates. } 据我所知,第二种方法是基于lambda的。 但是我不能正确理解这些方法。 […]

Kotlin并行协程

保存来自单独的协同程序的多个作业实例是可以接受的。 比方说,我想同时运行两个协程,它们是不相关的,不能在一个协程中发生,但我希望它们并行运行。 在Android中,我应该保存作业实例,这样我就可以在onDestroy方法中取消作业了。 将每项工作分别保存在清单中还是打破某种规定是可以接受的。 我知道在RX他们有订阅为什么Kotlin协同程序中没有相应的东西? val jobList = arrayListOf() fun startJob1() { jobList.add(launch { //do some work }) fun startJob1() { jobList.add(launch { //do some other unrelated work }) override fun onDestroy() { super.onDestroy() cancelAllActiveJobs(jobList) } 这种types的架构对于协程是否有意义?

如何在Android上使用Kotlin在BottomNavigationView上设置OnNavigationItemListener?

我使用kotlin-android-extension,我可以从layout文件调用bottomNavigationView id到kotlin文件。 我可以使用bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener {}) ,但接下来呢? 据我所知在Java中,有另一个名为onNavigationItemSelected函数,但我无法在kotlin中find它。 这是我想在Java中使用的示例代码,但不能写在kotlin中。 bottomNavigationView.setOnNavigationItemSelectedListener( new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.action_favorites: case R.id.action_schedules: case R.id.action_music: } return true; } });

将字节数组转换为Kotlin中的字符串

我试图在我的android代码中使用kotlin生成一个字符串的MD5 .. val md5 = MessageDigest.getInstance(“MD5”) val hash = md5.digest(queryToSign.toByteArray(Charset.defaultCharset())).toString() 但是这给了我: [B @ 118072 有什么想法吗?

相对布局参数在kotlin

我正尝试以编程方式设置relative layout params 。 我可以使用java设置params但不知道如何使用kotlin来完成。 所以我已经尝试了如下: MainActivity类 class MainActivity : AppCompatActivity() { lateinit var context : Context override fun onCreate(savedInstanceState: android.os.Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) context=this asdasd.text=”finaly done”; var param:RelativeLayout.LayoutParams =//don’t know what to do here val i:Int=1 var temp :TextView = TextView(this); temp.id=i temp.layoutParams = param ; temp.text= “TextView”+i Log.e(ContentValues.TAG, “onCreate: ” + i) } […]

Kotlin中的嵌套接口替代方法

好吧,我有一个接口,其中有很少的接口,在Kotlin代码看起来像这样 interface IStreamRepository : IBaseRepository { interface OnAddStreamCallback { fun onSuccess() fun onError(message: String) } interface OnGetAllStreamsCallback { fun onSuccess(streams: ArrayList) fun onError(message: String) } interface OnGetStreamByNameCallback { fun onSuccess(stream: Stream) fun onError(message: String) } interface OnDeleteStreamCallback { fun onSuccess() fun onError(message: String) } } 当我尝试做 getAllStreamsCallBack = IStreamRepository.OnGetAllStreamsCallback() { //and override methods in OnGetAllStreamsCallback […]

最佳做法访问kotlin的财产

我来自Java背景,第一次在Kotlin工作。 对于大多数人来说,这将是一个基本的问题,但它可能会帮助开始在Kotlin上工作的人,来自Java背景 所以,让我说我有listadapter,我想设置在该项目的列表。 我现在有两个选择。 1)创建一个存储项目列表的私有属性,然后创建一个setter,它设置列表并调用notifydatasetChanged() 2)创建一个属性设置属性function,然后访问像instance.property 在上述两个选项中,Kotlin会是更好的选择。