我试图找到一个尾部功能,List<T>但我找不到任何.我最终这样做了.
fun <T> List<T>.tail() = this.takeLast(this.size -1)
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我有一个函数可以收集流并通过启动其他协程来执行其他操作,在我对该函数的测试中,看起来我的协程都没有启动。我在这里缺少什么吗?
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) 在我的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.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被评论时,他们也不例外.
我正在尝试使用这个课程.它在调试版本上工作正常,但它永远不适用于发布版本.我知道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) 在Scala中,我们有一个require方法,用于为这样的类设置前置条件
class Rational(x: Int, y: Int) {
require(y != 0, "denominator must be different than zero ")
Run Code Online (Sandbox Code Playgroud)
我的问题是:我们在Kotlin有类似的东西吗?
我似乎无法让 android web view 使用深色主题或使用
@media (prefers-color-scheme: dark)
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 DayNight 主题的 AndroidX
有没有人有在 api 29 之前向后兼容的解决方案?
我正在尝试将此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中我没有订阅者添加新的订阅.
在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代码吗?"
我试图将函数传递给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引用操作符,但我不知道在这种情况下如何使用它
我一直在研究 Dart,我想知道它是否有像 Kotlin 那样的范围运算符 https://kotlinlang.org/docs/reference/ranges.html 或任何类似的东西。