小编Ada*_*itz的帖子

Espresso RecyclerView 错误 - 位置没有视图支架

我正在运行 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 并且我的依赖项如下:

  • com.android.support.test.espresso:espresso-core:2.2.2
  • com.android.support.test.espresso:espresso-contrib:2.2.2

java android android-espresso

7
推荐指数
1
解决办法
1460
查看次数

如何将 MoPub 原生广告传递给 Flutter?

我正在研究如何将 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 将是关键,因为它允许访问主要广告网络,从而提供有效的货币化。

android ios dart mopub flutter

7
推荐指数
0
解决办法
886
查看次数

你能用Django构建一个Chrome扩展吗?

我正在为我的团队构建Chrome扩展程序,以输入尽可能高效地存储数据的信息.我知道Chrome扩展程序是使用JavaScript构建的,但想知道我是否可以使用Django构建Chrome扩展程序?

我的计划是使用Django构建应用程序,然后使用AppEngine进行托管.

感谢您的反馈!我无法找到任何讨论使用Django开发Chrome扩展程序的Google搜索结果.

-亚当

django google-chrome-extension

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

创建Kotlin对象的新实例

我有一个对象QuickSort,我试图创建2个实例.当我尝试创建2个单独的实例时,我可以看到它只使用一个实例,因为我在QuickSort类中有一个不准确的计数.Kotlin 在语法中没有使用new,那么我该怎么做呢?

object QuickSort {
      var count = 0;
      quickSortOne(...){
          ...
          count++
          ...
      }
      quickSortTwo(...){
          ...
          count++
          ...
      }
  } 
Run Code Online (Sandbox Code Playgroud)

以下是我尝试创建2个实例的方法.我的目标是让quickSort1quickSort2成为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)

kotlin rx-kotlin kotlin-extension kotlin-android-extensions

6
推荐指数
2
解决办法
2万
查看次数

ConstraintLayout 在底部工作表视图中无法正常工作

问题

在底部工作表中使用时,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

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

Android LiveData get() 语法如何工作?

我了解需要在 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 kotlin android-livedata

6
推荐指数
2
解决办法
2540
查看次数

即时优化 Android Studio/IntelliJ 中所有项目的导入

有没有办法为所有项目即时优化导入,而不仅仅是 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 社区论坛

java android intellij-idea kotlin android-studio

6
推荐指数
2
解决办法
384
查看次数

JUnit 5 参数化测试 - 使用 Kotlin 在 @MethodSource 中“无法调用非静态方法”

预计

将标准 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)

junit android kotlin android-testing junit5

6
推荐指数
2
解决办法
3418
查看次数

Android Studio 未使用 Lint 显示建议的 Gradle 依赖项更新

预期的

在首选项下启用可用的较新库版本后,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)

设置

  • 首选项>编辑器>检查>可用的较新库版本

启用可用的较新库版本

安卓工作室

  • 安卓工作室4.2.1
  • 内部版本 #AI-202.7660.26.42.7351085,建于 2021 …

android lint intellij-idea gradle android-studio

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

停止或删除已部署的 AppEngine 服务

问题

我按照使用 Gradle 和 App Engine 插件文档部署了一个 AppEngine 实例作为示例。我希望停止或删除已部署的版本。但是,我无法在 AppEngine 仪表板中执行此操作,因为STOP按钮灰显并显示

您只能停止手动缩放、基本缩放或在柔性环境中的版本。

在此处输入图片说明

当我部署Jar应用程序时,我能够停止在 AppEngine 仪表板中运行版本,但无法停止通过命令行部署的这个版本gradle appengineDeploy

尝试的解决方案

  1. 删除不是一个选项的项目,因为我有一个链接到 AppEngine 项目的 Firebase 项目。

  2. 停止版本。

命令gcloud app versions stop VERSIONS [appVersion]

错误(gcloud.app.versions.stop) INVALID_ARGUMENT: serving status cannot be changed for Automatic Scaling versions

  1. 删除服务。

命令gcloud app services delete service

错误INVALID_ARGUMENT: The default service (module) cannot be deleted.

java google-app-engine google-cloud-platform gradle-plugin

5
推荐指数
0
解决办法
1446
查看次数