Tag: 安卓

Android(Kotlin)代码覆盖率异常

Android连接测试中的代码覆盖率(Jacoco)是确定哪些方法/功能需要某些TLC的非常有用的方法。 现在我正在通过Java切换到Kotlin,我发现了一些我无法解释的异常,因为这个屏幕截图显示了: 以$ _开头的方法是Kotlin或Android的内部方法,我强烈怀疑。 我的问题是:1)有没有人有任何洞察,为什么这些方法包括在雅科克代码覆盖率报告,2)有没有办法排除他们?

permissionsdispatcher和多个@ NeedsPermission与kotlin

对于一个权限,我可以在java和kotlin中使用permissionsdispatcher – 但是当涉及到像这样的多个权限时: @NeedsPermission({Manifest.permission.BLUETOOTH_ADMIN,Manifest.permission.BLUETOOTH}) 我在kotlin上遇到了一个问题 – 它不能接受多个参数 – 可以和java一起工作

Kotlin – 带多个标志语法的getPendingIntent

我试图通知Java代码中的简单通知 kotlin中这一行的语法是什么? stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT | Intent.FLAG_ACTIVITY_NEW_TASK); 在kotlin中,我不能用'|' 为2个标志,只有这样: stackBuilder.getPendingIntent(0,PendingIntent.FLAG_ONE_SHOT)

在Kotlin中使用辅助构造函数的子类RelativeLayout

我试着在Kotlin中继承RelativeLayout,但我坚持三个构造函数。 public RelativeLayout(Context context) {} public RelativeLayout(Context context, AttributeSet attrs) {} public RelativeLayout(Context context, AttributeSet attrs, int defStyle) {} 我已经尝试了http://devnet.jetbrains.com/message/5482057中描述的过程,但是我没有看到如何将它们与我的用例相匹配。 希望三个构造函数互相调用,我尝试使用默认值,但在应用程序启动时崩溃: class SquareRelativeLayout(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) : RelativeLayout(context, attrs!!, defStyle) {} 任何暗示Kotlin的方式来做到这一点? 我正在使用Kotlin 0.8.11

Kotlin不适用于Android Studio

所有kotlin文件都无法显示在我的Android Studio上。 即使直接将java文件转换为koltin,也可以对其进行编辑,但不会出现在项目文件树中。 另外IDE建议它是一个反编译的.class文件。 我无法创建Kotlin文件。 当我这样做,它显示一个对话框说 无法创建文件/无法解析模板“Kotlin文件”错误消息:无法创建类文件 Android插件“Kotlin Extensions For Android(废弃)”无法正常安装,我可以点击安装,但是不起作用。 我的Android Studio版本2.1.2

将RxJava代码正确转换为Kotlin

我正在学习Kotlin和RxJava。 我在Java中拥有这样的代码: public class MainActivity extends AppCompatActivity { private HashMap<String, Object> cacheToInsertToDb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cacheToInsertToDb = new HashMap<>(); Observable.interval(1, TimeUnit.SECONDS) .take(30) // up to 30 items .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Long>() { @Override public void accept(Long aLong) throws Exception { cacheToInsertToDb.put(aLong+"", aLong); Log.d("Observable", cacheToInsertToDb.values().toString()); } }, new Consumer<Throwable>() { @Override public […]

如何访问Kotlin中的“Activity.this”?

我有这样的Java代码: MaterialDialog builder = new MaterialDialog.Builder(MainActivity.this) 我想获取Kotlin中的MainActivity对象。 MainActivity.this自动转换。

Kotlin:跳过协程

我在演示Android应用程序中玩Kotlin和Coroutines。 这是我有: fun testCoroutine3() = runBlocking { var num = 0 val jobs = List(10_000) { // create a lot of coroutines and list their jobs. launch(CommonPool) { delay(1000L) println(num++) } } for(job in jobs) { job.join() //wait for all jobs to finish } println("FINAL RESULT $num") } 基本上,我创建了1万个等待1秒的协程的列表,然后打印一个数字然后递增。 然后,当所有的工作完成后,我打印最终的结果。 (这个演示取自GitHub文档 ) 现在我的大部分测试运行良好,所有的协程几乎同时运行,最终结果是10000 但在一些罕见的情况下,我得到的最终结果是9,999 例如,当我把这个数字增加到5万时,这变得更加明显: […]

如何在Kotlin中注入var?

我尝试将Dagger2实现到我的Kotlin项目中,但是@Inject注释存在问题。 在Java中看起来像这样,这工作正常: public class FooActivity extends Activity { @Inject @Named("accessTokenObservable") public Flowable<Optional<AccessToken>> accessTokenObservable; @Override protected void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); App.getGraph().inject(this); } } 但是,我如何写Kotlin中的@Inject ? 当我使用这个: @Inject @Named("accessTokenObservable") var accessTokenObservable: Flowable<Optional<AccessToken>>? = null 我得到这个错误消息: Error:Dagger does not support injection into private fields 如果我使用lateinit : @Inject @Named("accessTokenObservable") lateinit var accessTokenObservable: Flowable<Optional<AccessToken>> 我得到这个错误消息: Error:Flowable<Optional<AccessToken>> cannot […]

无法编译Kotlin代码

我想实现Facebook登录写在kotlin。 下面的代码工作正常: 包social.social import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import com.facebook.* import com.facebook.login.LoginResult import com.facebook.login.LoginManager import com.facebook.login.widget.LoginButton import org.json.JSONObject import java.util.* class MainActivity : AppCompatActivity() { private var callbackManager: CallbackManager? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) callbackManager = CallbackManager.Factory.create() var loginBtn: LoginButton = findViewById(R.id.login_button) as LoginButton loginBtn.setReadPermissions(Arrays.asList("public_profile","email","user_photos")) loginBtn.registerCallback(callbackManager, object : FacebookCallback<LoginResult> { […]