我正在运行 Espresso 测试以单击 RecyclerView 的一个元素。
onView(withId(R.id.recyclerList)).perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:java.lang.IllegalStateException: No view holder at position
我检查了视图 id 指向我的 RecyclerView 并且我的依赖项如下:
我正在研究如何将 MoPub 的 Android 和 iOS 原生广告实现集成到 Flutter。为了让 Flutter 正确显示,需要传递从 MoPub 接收到的原生广告的哪些数据在下面的onNativeLoad方法中?
基于 MoPub 的手动原生广告集成文档(在 Android 上),可以通过EventChannel接收和传递广告数据,以便在 Flutter 的 UI 中显示。我不确定NativeAd需要将对象中的哪些信息传递给 Flutter。
moPubNativeNetworkListener = new MoPubNative.MoPubNativeNetworkListener() {
@Override
public void onNativeLoad(final NativeAd nativeAd) {
Log.d("MoPub", "Native ad has loaded.");
}
@Override
public void onNativeFail(NativeErrorCode errorCode) {
Log.d("MoPub", "Native ad failed to load with error: " + errorCode.toString());
}
};
Run Code Online (Sandbox Code Playgroud)
开发人员在 Flutter 上使用 MoPub 将是关键,因为它允许访问主要广告网络,从而提供有效的货币化。
我正在为我的团队构建Chrome扩展程序,以输入尽可能高效地存储数据的信息.我知道Chrome扩展程序是使用JavaScript构建的,但想知道我是否可以使用Django构建Chrome扩展程序?
我的计划是使用Django构建应用程序,然后使用AppEngine进行托管.
感谢您的反馈!我无法找到任何讨论使用Django开发Chrome扩展程序的Google搜索结果.
-亚当
我有一个对象QuickSort,我试图创建2个实例.当我尝试创建2个单独的实例时,我可以看到它只使用一个实例,因为我在QuickSort类中有一个不准确的计数.Kotlin 在语法中没有使用new,那么我该怎么做呢?
object QuickSort {
var count = 0;
quickSortOne(...){
...
count++
...
}
quickSortTwo(...){
...
count++
...
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我尝试创建2个实例的方法.我的目标是让quickSort1和quickSort2成为2个独立的实例.
var quickSort1 = QuickSort
quickSort1.quickSortOne(...)
var quickSort2 = QuickSort
quickSort2.quickSortTwo(...)
Run Code Online (Sandbox Code Playgroud)
尝试的解决方案:将QuickSort从对象转换为类.这仍然导致使用相同的实例,如第二种方法的计数所示,包括第一次调用计数.
class QuickSort {
var count = 0;
quickSortOne(...){
...
count++
...
}
quickSortTwo(...){
...
count++
...
}
}
Run Code Online (Sandbox Code Playgroud)
...
var quickSortFirst = QuickSort()
printTest(quickSortFirst.quickSortFirst(arrayList, 0, arrayList.size - 1))
var quickSortLast = QuickSort()
printTest(quickSortLast.quickSortLast(arrayList, 0, arrayList.size …Run Code Online (Sandbox Code Playgroud) 在底部工作表中使用时,ConstraintLayout 无法按预期工作。在这种情况下,ConstraintLayout 包含 2 个图像,包括底部工作表中的内容的句柄和 1 个视图。内容视图应该放置在没有发生的句柄图像下方。
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/bottomSheet"
android:layout_width="match_parent"
android:layout_height="350dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<ImageView
android:id="@+id/bottom_handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/ic_bottom_sheet_handle"
android:contentDescription="@string/saved_bottomsheet_handle_content_description"
android:elevation="16dp"
android:src="@drawable/ic_save_planet_dark_48dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_elevation_height"
android:background="@color/bottom_sheet_handle_elevation"
android:contentDescription="@string/saved_bottomsheet_handle_content_description"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/bottom_handle" />
<FrameLayout
android:id="@+id/savedContentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/bottom_handle" />
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
内容视图中的操作栏浮动在句柄视图后面。
手柄位于内容视图和操作栏上方。
尽管我宁愿使用 ConstraintLayout 而不是 RelativeLayout,RelativeLayout 也可以在这里工作。
<RelativeLayout
android:id="@+id/bottomSheet"
android:layout_width="match_parent"
android:layout_height="350dp"
android:elevation="16dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<ImageView
android:id="@+id/bottom_handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/ic_bottom_sheet_handle"
android:contentDescription="@string/saved_bottomsheet_handle_content_description"
android:elevation="16dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_save_planet_dark_48dp" />
<ImageView
android:layout_width="match_parent"
android:layout_height="@dimen/bottom_sheet_elevation_height"
android:background="@color/bottom_sheet_handle_elevation"
android:contentDescription="@string/saved_bottomsheet_handle_content_description"
android:layout_alignBottom="@id/bottom_handle"/> …Run Code Online (Sandbox Code Playgroud) android android-layout android-relativelayout android-constraintlayout
我了解需要在 ViewModel 中为 LiveData创建 getter 和 setter 点,但我希望了解该get()语法在 Android 中的工作原理。
IE:
val isRealtime: LiveData<Boolean>
get() = _isRealtime
private val _isRealtime = MutableLiveData<Boolean>()
Run Code Online (Sandbox Code Playgroud) 有没有办法为所有项目即时优化导入,而不仅仅是 Android Studio/IntelliJ 中的“当前项目”?
优化在打开现有项目和/或创建新项目时启用的导入。
Add unambiguous imports on the fly是IDE级别的设置。但是,Optimize imports on the fly似乎不是作为括号状态for current project。我通过创建一个新项目并打开设置对此进行了测试。正如预期的那样,Add unambiguous imports on the fly被选中而Optimize imports on the fly未被选中。
目前的IntelliJ文档,汽车进口,并没有提供一个解决方案。
Optimize imports on the fly (for current project)在新项目的首选项下启用...
这产生了与上面相同的观察结果。
这也已添加到IntelliJ 社区论坛。
将标准 JUnit 5 测试转换为参数化测试,以便使用Kotlin 中的@ParamterizedTest和@MethodSource注释迭代测试用例流。
在@MethodSource无法访问数据流。这似乎是此注释的一个问题,因为@ValueSource(strings = ["SF", "NYC"])按预期迭代静态定义的选项。
错误:
PreconditionViolationException:无法在空目标上调用非静态方法 {someMethodName}。
参数化测试设置为传入数据类流,类似于 Phillip Hauer 在参数化测试的数据类中概述的设置。
build.gradle (:SomeProject)
dependencies {
...
classpath("de.mannodermaus.gradle.plugins:android-junit5:$junit5_version")
}
Run Code Online (Sandbox Code Playgroud)
build.gradle (:someModule)
apply plugin: "de.mannodermaus.android-junit5"
android {
...
compileOptions.targetCompatibility = JavaVersion.VERSION_1_8
kotlinOptions.jvmTarget = "1.8"
}
dependencies {
testImplementation "org.junit.jupiter:junit-jupiter-api:5.6.2"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.6.2"
testImplementation "org.junit.jupiter:junit-jupiter-params:5.6.2"
}
Run Code Online (Sandbox Code Playgroud)
SomeTest.kt
class SomeTest {
private val testDispatcher = TestCoroutineDispatcher()
private fun someDataStates() = Stream.of(
// Kotlin data class
TestState("123"), …Run Code Online (Sandbox Code Playgroud) 在首选项下启用可用的较新库版本后,Lint 将在build.gradle文件中显示推荐的 Gradle 依赖项/库更新。
Lint 未在build.gradle文件中显示推荐的 Gradle 依赖项/库更新。项目结构建议下显示了许多建议的更新。
即菜单:文件>项目结构... >建议
库版本号作为变量保存在应用程序级别的build.gradle文件中。
应用程序级build.gradle
buildscript {
ext.build_gradle_version = '4.1.2'
ext.kotlin_version = '1.4.21'
ext.fragment_version = '1.2.4'
...
dependencies {
classpath "com.android.tools.build:gradle:$build_gradle_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
...
}
}
Run Code Online (Sandbox Code Playgroud)
项目级build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
...
android {
...
}
dependencies {
implementation "androidx.fragment:fragment-ktx:$fragment_version"
...
}
Run Code Online (Sandbox Code Playgroud)
设置
安卓工作室
我按照使用 Gradle 和 App Engine 插件文档部署了一个 AppEngine 实例作为示例。我希望停止或删除已部署的版本。但是,我无法在 AppEngine 仪表板中执行此操作,因为STOP按钮灰显并显示
您只能停止手动缩放、基本缩放或在柔性环境中的版本。
当我部署Jar应用程序时,我能够停止在 AppEngine 仪表板中运行版本,但无法停止通过命令行部署的这个版本gradle appengineDeploy。
命令:gcloud app versions stop VERSIONS [appVersion]
错误:(gcloud.app.versions.stop) INVALID_ARGUMENT: serving status cannot be changed for Automatic Scaling versions
命令:gcloud app services delete service
错误:INVALID_ARGUMENT: The default service (module) cannot be deleted.