小编Edg*_*Dev的帖子

我没有导入Recycler View AndroidX库,但是,我正在使用它。为什么以及如何运作?

build.gradle(应用程序)

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.todolistapp"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    // Room
    def room_version = "2.0.0"
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    // ViewModel and LiveData
    def lifecycle_version = "2.0.0"
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

    // For Floating Action Button
    implementation 'com.google.android.material:material:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

从依赖关系中可以看到,我没有导入回收视图Androidx库。

androidx.recyclerview:recyclerview:1.0.0

但是如下所示,我可以在布局(activity_main.xml)和MainActivity代码中轻松使用它。

<?xml version="1.0" …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview androidx

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

尝试生成签名Apk时出现Gradle构建错误

大约34小时前我生成了一个签名的apk但现在,我一直无法生成签名的Apk,我不知道如何解决这个问题.请帮忙

这是我的输出消息

错误:注意:有11个重复的类定义.(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)FAILURE:构建因异常而失败.

在10s内建立失败

这是我的build.gradle(app)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'io.fabric'

android {
    compileSdkVersion 26
    buildToolsVersion '27.0.3'
    defaultConfig {
        applicationId "com.myapp……"
        minSdkVersion 17
        targetSdkVersion 26
        versionCode 5
        versionName "5.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "com.android.support:appcompat-v7:$support_version"
    implementation …
Run Code Online (Sandbox Code Playgroud)

android proguard gradle android-gradle-plugin

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

如何在 Firebase 事件分析中查看捆绑包参数

我有一个独特的按钮,位于 4 个不同的片段中。这些独特的按钮在所有这些片段中执行类似的操作,但进行了一些调整。

由于所有这些事情都很相似,我将它们记录在事件名称“unique_btn_click_event”下

val eventName = "unique_btn_click_event"
val eventBundle = Bundle()

eventBundle.putString("fragment_name", fragmentName)
eventBundle.putString("unique_stuff_1", uniqueStuff1)
eventBundle.putString("unique_stuff_2", uniqueStuff2)
eventBundle.putString("qty_selected", quantity)

FirebaseAnalytics.getInstance(context).logEvent(eventName, eventBundle)
Run Code Online (Sandbox Code Playgroud)

我的目标是测量哪个片段最常使用唯一按钮,以便我可以针对该片段进行优化,并可能弃用其他片段。

虽然事件unique_btn_click_event被记录,但我看不到我记录的捆绑参数的历史记录。我单击fab_actions事件:

在此输入图像描述

在出现的下一页中,我没有地方可以查看这些捆绑包,即使按计数也是如此。

我得到的最接近的是:StreamView:它旨在仅显示实时捆绑数据。实时很酷,但它不能用来做出高质量的决策。

我单击“流视图”。

在此输入图像描述

我点击“趋势”,然后点击“事件”

在此输入图像描述

我看到实时捆绑日志数据列表。

在此输入图像描述

我如何查看日志历史记录的操作计数。

我如何嵌套事件。

android google-analytics firebase firebase-analytics

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

ActionMode.Callback 的实现

我有一个 ActionMode 的实现来显示 RecyclerView 中多选项目的数量。

我想知道何时点击actionMode中的后退按钮以便相应地重置recyclerView,但是在实现ActionMode.Callback时,我注意到每当ActionMode更新时都会调用onDestroyActionMode actionMode?.setTitle($selectedItems.size),这使得无法重置recyclerView - 删除选定的项目,删除覆盖颜色并通知 recyclerview 数据集已更改。 多重选择

这是我的回调

inner class ActionModeCallback : ActionMode.Callback {
    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        when (item?.getItemId()) {
            R.id.action_delete -> {
                myAdapter?.deleteSelectedIds()
                actionMode?.setTitle("") //remove item count from action mode.
                actionMode?.finish()
                return true
            }
        }
        return false
    }

    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        val inflater = mode?.getMenuInflater()
        inflater?.inflate(R.menu.action_mode_menu, menu)
        return true
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        menu?.findItem(R.id.action_delete)?.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
        return true
    }

    override fun …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-actionmode android-recyclerview

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

如何检查Android服务是否已在运行

这与如何检查服务是否在Android上运行类似的问题但是由于该问题较旧且提供的答案已被弃用或无法正常使用。因此是单独的问题。

我有一个实现,可以在启动完成时启动服务,但是我也想在MainActivity的onCreate中启动该服务,以防该服务之前未启动。

这是我尝试过的

1.提取静态布尔值以获取服务状态,如下所示。

MyService.kt

class MyService : Service() {
    override fun onCreate() {
        super.onCreate()
        isServiceStarted = true
    }
    override fun onDestroy() {
        super.onDestroy()
        isServiceStarted = false
    }
    companion object {
        var isServiceStarted = false
    }
}
Run Code Online (Sandbox Code Playgroud)

MainActivity.kt

class MainActivity : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val serviceStarted = MyService.isServiceStarted
        if (!serviceStarted) {
            val startMyService = Intent(this, MyService::class.java)
            ContextCompat.startForegroundService(this, startMyService)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我很快发现,onDestroy销毁服务时并不总是调用此方法,从而使我的静态布尔变量(isServiceStarted)为真,而实际上却已被销毁。

2.检查功能

fun isMyServiceRunning(serviceClass : Class<*> ) : …
Run Code Online (Sandbox Code Playgroud)

android android-service kotlin

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