小编Abd*_*lat的帖子

Kotlin List尾部功能

我试图找到一个尾部功能,List<T>但我找不到任何.我最终这样做了.

fun <T> List<T>.tail() = this.takeLast(this.size -1)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

kotlin kotlin-extension

20
推荐指数
1
解决办法
4679
查看次数

CoroutineScope.launch 在 TestScope 中不起作用

我有一个函数可以收集流并通过启动其他协程来执行其他操作,在我对该函数的测试中,看起来我的协程都没有启动。我在这里缺少什么吗?

class Tax(
    private val coroutineScope: CoroutineScope,
) {
    fun operate() {
        coroutineScope.launch {
            // some work done here 
        }
    }
}

// My Test class 
@Test
fun `test operate`() = runTest {
    val tax = Tax(this)
    tax.operate()
    // verify something with in the coroutineScope.launch always fails
}
Run Code Online (Sandbox Code Playgroud)

testing android kotlin kotlin-coroutines

10
推荐指数
1
解决办法
1081
查看次数

在BottomNavigationView中强制显示图标和标题支持android

在我的menu.xml文件中为BottomNavigationView添加4个项目后,它仅显示所选项目标题并隐藏所有其他标题.我可以强制显示标题和图标.这是我的代码.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_home"
    android:enabled="true"
    android:icon="@drawable/ic_home_24dp"
    android:title="@string/text_home"
    app:showAsAction="ifRoom" />

<item
    android:id="@+id/action_category"
    android:enabled="true"
    android:icon="@drawable/ic_grid_24dp"
    android:title="@string/text_category"
    app:showAsAction="ifRoom" />

<item
    android:id="@+id/action_me"
    android:enabled="true"
    android:icon="@drawable/ic_me_24dp"
    android:title="@string/text_me"
    app:showAsAction="ifRoom" />

<item
    android:id="@+id/action_setting"
    android:enabled="true"
    android:icon="@drawable/ic_cog_24dp"
    android:title="@string/text_setting"
    app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@android:color/white"
    android:elevation="6dp"
    android:translationZ="6dp"
    app:menu="@menu/bottom_navigation_main" />
Run Code Online (Sandbox Code Playgroud)

android android-layout bottomnavigationview

8
推荐指数
4
解决办法
1万
查看次数

android.util.Patterns单元测试返回NullPointerException

我开始使用android中的单元测试我试图测试一个使用的方法:

android.util.Patterns.EMAIL_ADDRESS.matcher(validEmail).matches()
Run Code Online (Sandbox Code Playgroud)

它应该返回true,因为我在build.gradle中添加了它

testOptions { 
    unitTests {
        returnDefaultValues = true
    }
} 
Run Code Online (Sandbox Code Playgroud)

测试仍会抛出NullPointerException.

我有两个问题:1-如何解决这个问题?2-我应该重新考虑我的设计并将android依赖项移除到模拟对象.

// @ LoginPresenterTest
@Test
public void clickOnLogin_loginSuccess(){
    loginPresenter.login(validEmail, validPassword);
    verify(loginView).setLoginButton(false);
}
// LoginPresenter
public void login(String email, String password) {

    loginView.setLoginButton(false);
    if(!isValid(email, password)){
        loginView.setLoginButton(true);
        return;
    }
}
// Validation
public static boolean isEmailValid(String email){
    return !(email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches());
}
Run Code Online (Sandbox Code Playgroud)

当android.utills被评论时,他们也不例外.

android unit-testing junit4

6
推荐指数
1
解决办法
1545
查看次数

保留使用反射Android Proguard的类

我正在尝试使用这个课程.它在调试版本上工作正常,但它永远不适用于发布版本.我知道proguard删除它,所以问题是如何保持这个类?

import android.support.design.internal.BottomNavigationItemView;
import android.support.design.internal.BottomNavigationMenuView;
import android.support.design.widget.BottomNavigationView;
import android.util.Log;
import java.lang.reflect.Field;

public class BottomNavigationViewHelper {
    public static void disableShiftMode(BottomNavigationView view) {
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
        try {
            Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
            shiftingMode.setAccessible(true);
            shiftingMode.setBoolean(menuView, false);
            shiftingMode.setAccessible(false);
            for (int i = 0; i < menuView.getChildCount(); i++) {
                BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
                //noinspection RestrictedApi 
                item.setShiftingMode(false);
                // set once again checked value, so view will be updated 
                //noinspection RestrictedApi 
                item.setChecked(item.getItemData().isChecked());
            }
        } catch (NoSuchFieldException e) {
            Log.e("BNVHelper", "Unable to get shift mode …
Run Code Online (Sandbox Code Playgroud)

java reflection android android-proguard

6
推荐指数
1
解决办法
1397
查看次数

Scala在Kotlin中需要()等效

在Scala中,我们有一个require方法,用于为这样的类设置前置条件

class Rational(x: Int, y: Int) {
   require(y != 0, "denominator must be different than zero ")
Run Code Online (Sandbox Code Playgroud)

我的问题是:我们在Kotlin有类似的东西吗?

scala class require kotlin

5
推荐指数
1
解决办法
323
查看次数

在 webview 中使用暗模式

我似乎无法让 android web view 使用深色主题或使用

@media (prefers-color-scheme: dark)
Run Code Online (Sandbox Code Playgroud)

我正在使用带有 DayNight 主题的 AndroidX

有没有人有在 api 29 之前向后兼容的解决方案?

css android android-webview android-dark-theme

5
推荐指数
2
解决办法
1702
查看次数

从RxJava 1到RxJava 2

我正在尝试将此RxJava1代码转换为RxJava2

public static Observable<Path> listFolder(Path dir, String glob) {
    return Observable.<Path>create(subscriber -> {
        try {
            DirectoryStream<Path> stream =
                    Files.newDirectoryStream(dir, glob);

            subscriber.add(Subscriptions.create(() -> {
                try {
                    stream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }));
            Observable.<Path>from(stream).subscribe(subscriber);
        } catch (DirectoryIteratorException ex) {
            subscriber.onError(ex);
        } catch (IOException ioe) {
            subscriber.onError(ioe);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

问题是在Rxjava2中我没有订阅者添加新的订阅.

java rx-java

4
推荐指数
1
解决办法
496
查看次数

Kotlin VS Scala:使用主构造函数参数实现方法

在Scala中,您可以编写这样的代码.

trait List[T] {
   def isEmpty() :Boolean
   def head() : T
   def tail() : List[T]
}

class Cons[T](val head: T, val tail: List[T]) :List[T] {
   def isEmpty = false
}
Run Code Online (Sandbox Code Playgroud)

你不需要覆盖它们已经定义的尾部和头部,但在Kotlin中我必须对此进行编码.

interface List<T> {
   fun isEmpty() :Boolean
   fun head() : T
   fun tail() : List<T>
}

class Cons<T>(val head: T, val tail: List<T>) :List<T> {
    override fun isEmpty() = false
    override fun head() = head
    override fun tail() = tail
}
Run Code Online (Sandbox Code Playgroud)

我的问题是"他们是一个更好的方式来编写我的Kotlin代码吗?"

scala interface traits kotlin

3
推荐指数
1
解决办法
248
查看次数

Kotlin:获取对类实例的函数的引用

我试图将函数传递给Kotlin中的函数,这是我的代码.

fun validateValueWithFunc(value: String, parsefun: (CharSequence) -> Boolean, type: String){
    if(parsefun(value))
        print("Valid ${type}")
    else
        print("Invalid ${type}")
}
Run Code Online (Sandbox Code Playgroud)

我传递的函数来自Regex类"containsMatchIn"

val f = Regex.fromLiteral("some regex").containsMatchIn
Run Code Online (Sandbox Code Playgroud)

我知道:: function引用操作符,但我不知道在这种情况下如何使用它

function kotlin

3
推荐指数
1
解决办法
523
查看次数

飞镖范围运算符

我一直在研究 Dart,我想知道它是否有像 Kotlin 那样的范围运算符 https://kotlinlang.org/docs/reference/ranges.html 或任何类似的东西。

dart flutter

1
推荐指数
2
解决办法
1818
查看次数