小编Lin*_*ton的帖子

无法解析符号'AppCompatActivity'

我刚刚尝试使用Android Studio.我创建了空白项目并试图创建Activity扩展AppCompatActivity.不幸的Android Studio"说"它

无法解析符号'AppCompatActivity'

我有 compile "com.android.support:appcompat-v7:22.0.+"我的"app"模块的依赖列表和重建项目几次.但是我只能使用ActionBarActivity.我究竟做错了什么?

android android-appcompat gradle android-support-library android-studio

204
推荐指数
15
解决办法
27万
查看次数

什么是Gradle中已弃用的JaCoCo扩展的替代品?

我使用RobolectricJaCoCo在一起.如果没有gradle脚本中的以下代码行,我的代码覆盖率报告将无效:

 testOptions {
    unitTests.all {
        jacoco {
            includeNoLocationClasses = true
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

但是在最近的Gradle版本中,我在这里使用的JaCoCo扩展标记为已弃用.我找不到任何替代品.那么,我应该在哪里申请includeNoLocationClasses = true

android gradle jacoco android-gradle-plugin

11
推荐指数
1
解决办法
1852
查看次数

通用图像加载器gridview在notifyDataSetChanged调用后闪烁

我正在使用UIL与此配置从FILE加载图像:

BitmapDisplayer displayer = new FadeInBitmapDisplayer(500) {

        @Override
        public Bitmap display(Bitmap bitmap, ImageView imageView,
                LoadedFrom loadedFrom) {
            if (loadedFrom != LoadedFrom.MEMORY_CACHE) {
                return super.display(bitmap, imageView, loadedFrom);
            } else {
                imageView.setImageBitmap(bitmap);
                return bitmap;
            }
        }

    };
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .cacheInMemory(true).resetViewBeforeLoading(true)
            .showImageForEmptyUri(R.drawable.thumbnail_no_image)
            .showImageOnFail(R.drawable.thumbnail_no_image)
            .displayer(displayer).build();
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            context).defaultDisplayImageOptions(options)
            .memoryCacheSize(2 * 1024 * 1024).build();
    sLoader.init(config);
Run Code Online (Sandbox Code Playgroud)

GridView在我考虑选择任何项目后,我需要实现选择,我打电话notifyDataSetChanged让我的selectionOverlay可见.在此调用之后,所有图像开始重新加载,这导致GridView闪烁.我怎么能避免这个?

android gridview adapter universal-image-loader

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

File.deleteOnExit - 来自评论的Unix技巧

以下是此方法的源注释:

请注意,在Android上,应用程序生命周期不包括VM终止,因此调用此方法将无法确保删除文件.相反,你应该使用最合适的:

 * Use a {@code finally} clause to manually invoke {@link #delete}.
 * Maintain your own set of files to delete, and process it at an appropriate point
    in your application's lifecycle.
 * Use the Unix trick of deleting the file as soon as all readers and writers have
   opened it. No new readers/writers will be able to access the file, but all existing
   ones will still have access until the last one closes the file.
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释它中提到的"Unix技巧"是什么以及如何使用它?

android

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

MediaStore:获取图像数据,缩略图和文件夹

我有两个清单.我们称之为AlbumsList和PicturesList.

  • 第一个显示相册封面(其中一个图像),它的名称和图片数量.
  • 第二个显示所选专辑中包含的所有图像.

我已经使用File类完成了它,但它工作得太慢,当我只需要来自库的那些时,它会在设备上找到所有图像.我读过有关MediaStore内容提供商但从未使用过它.所以我有两个问题:

  1. 如何使用MediaStore课程找到"相册"(包含图片的图库中的文件夹),缩略图和图片中的图片数量?我认为它类似于"如何为图库中的所有图像查找文件路径和缩略图?"
  2. 如何使用MediaStore类获取特定文件夹中所有图像的文件路径和缩略图?

编辑:似乎MediaStore.Images.Media.DATA列包含文件路径,所以我可以获取相册文件夹.MediaStore.Images.Media.Display_NAME看起来像文件名,但我不确定它总是如此.我可以在不进行第二次查询的情况下将缩略图数据列添加到这些列中吗?

android uri mediastore android-contentprovider

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

更新到Kotlin 1.3.30后的“未解决的参考:打包”

我长时间kotlin-android-extensions在实验模式下使用Kotlin 1.3.21和插件一起使用了很长时间。今天,我通过更改版本就切换到Kotlin 1.3.30,现在无论在哪里使用@Parcelize注释,我都会看到错误: Unresolved reference: Parcelize

这是我启用android扩展的方法:

apply plugin: 'kotlin-android-extensions'

androidExtensions {
    experimental = true
    features = ["parcelize"]
}
Run Code Online (Sandbox Code Playgroud)

注意,我尝试时未明确声明必需的功能,但效果也不佳。

另请注意,我使用的是Grrovy Gradle DSL。

如何Parcelize使用Kotlin 1.3.30重新启用?

编辑这是我的应用程序级别build.gradle

apply plugin: 'com.android.application'
apply plugin: "de.mannodermaus.android-junit5"
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

apply from: "../versions.gradle"

android {

    compileSdkVersion 28

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "com.myapp.dtt"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        vectorDrawables.useSupportLibrary = true
    } …
Run Code Online (Sandbox Code Playgroud)

android kotlin

7
推荐指数
2
解决办法
1182
查看次数

JUnit断言:检查Object是否等于String

我已Map声明如下:

Map<String, Object> data
Run Code Online (Sandbox Code Playgroud)

我把String它放进去并验证它的价值如下:

assertEquals("value", data.get("key"));
Run Code Online (Sandbox Code Playgroud)

现在,我想重写验证assertThat而不是使用assertEquals.我尝试过以下方法:

assertThat(data.get("key"), equalTo("value"));
Run Code Online (Sandbox Code Playgroud)

当然,由于类型不匹配,它不起作用:

Wrong 2nd argument type. Found: 'org.hamcrest.Matcher<java.lang.String>', required: 'org.hamcrest.Matcher<? super java.lang.Object>' less...

第一个参数的显式类型转换有String帮助,但我想避免它.例如assertEquals,不需要类型转换.那么,如何使用该方法检查Map上面声明的放入对象的值是否等于特定值?StringassertThat

java junit android assertions

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

WorkManager 尝试在 Application#onCreate 中排队独特的定期工作时崩溃

我想将 WorkManager 与 Dagger 2 一起使用,将依赖项注入到工作人员中。我按照这篇文章来实现设置。设置部分是按需初始化。为了实现它,我将以下行添加到我的清单文件中:

\n\n
    <provider\n        android:name="androidx.work.impl.WorkManagerInitializer"\n        android:authorities="${applicationId}.workmanager-init"\n        android:exported="false"\n        tools:node="remove" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

并使我的应用程序类实现Configuration.Provider如下接口:

\n\n
    @NonNull\n    @Override\n    public Configuration getWorkManagerConfiguration() {\n        return new Configuration.Builder().setMinimumLoggingLevel(Log.DEBUG).setWorkerFactory(delegatingWorkerFactory).build();\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

Dagger 设置按预期工作。

\n\n

但是我遇到了以下问题:在Application#onCreate我将唯一的定期任务排入队列并在第一次安装应用程序时,此操作总是失败并出现以下错误:

\n\n
java.lang.IllegalStateException: The file system on the device is in a bad state. WorkManager cannot access the app\'s internal data store.\n    at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:115)\n    at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)\n    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)\n    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)\n    at java.lang.Thread.run(Thread.java:764)\n Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database\n …
Run Code Online (Sandbox Code Playgroud)

android android-workmanager

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

嵌套片段生命周期

我有4个片段。我通过使用hide/ show事务在它们之间切换。其中之一可能具有嵌套的片段,这些片段是通过replace事务添加的。问题是,如果我添加一个嵌套片段,则隐藏主片段,然后再次显示它,onHiddenChanged则不会调用嵌套片段的方法。为什么这样?如何确定嵌套片段何时可​​见?

android android-fragments fragment-lifecycle android-nested-fragment

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

ListView隐藏了一些项目

我想根据一些标准隐藏ListView中的一些项目.我找到了2个解决方案,但都没有.我试图ViewgetItem()方法返回empry ,但分隔符仍然可见.因此,如果我隐藏所有项目,例如它会导致大量的分隔线.第二个是设置View.GONEgetItem()方法.但ListView仍然为不可见的项目保留位置,这导致我的列表中的空视图.有没有人找到这个问题的解决方法?

编辑:另外我需要注意,我无法从数据集中删除任何数据.Adapter/ListView必须只能隐藏指定的项目.

android listview adapter

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

如何在 Tensorflow Mobile/Lite 中训练 SSD 模型

我有一个 300*300 图像的数据集以及其中的对象框和标签。我想使用 SSD 网络来检测图像上的这些对象。我也想在移动设备上做到这一点,所以我需要最终的模型与 TF Mobile/Lite 兼容。问题是:我应该从哪里开始?

我知道 TF Mobile/Lite 支持 SSD(参见https://github.com/tensorflow/tensorflow/issues/15633例如,我认为 TF 不应该有经过训练的 SSD 模型,我只需要在我自己的数据集上进行训练。但我只能找到预先训练过的。我也找不到任何教程来解释如何在自己的数据集上训练现有模型。

所以,更准确地说:

  1. 我的假设是,我应该获得未经训练的模型并使用一些简单的脚本在我自己的数据集上对其进行训练,对吗?
  2. 如果,那么我在哪里可以获得这个模型和训练脚本?
  3. 我是否需要使用桌面 TF 对其进行训练,然后转换为 Mobile/Lite 模型?

tensorflow tensorflow-lite

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