小编Viv*_*ngh的帖子

Android Studio 新更新 4.0 版称 Kotlin 与此新版本不兼容

我收到了 android studio 的新更新 (4.0),更新向导说kotlin 和 firebase 服务与此更新不兼容。

在此处输入图片说明

更新后我可以使用 kotlin 和 firebase 服务吗?或者考虑到我的一些活动项目使用 kotlin,下载此更新是否安全。

android kotlin firebase android-studio android-studio-4.0

14
推荐指数
1
解决办法
2065
查看次数

Android BottomSheetBehavior 中所有状态的详细解释

大约有六个不同的州BottomSheetBehavior。我没有得到他们的任何适当的解释。

就像我不明白STATE_HIDDEN和之间的区别STATE_COLLAPSED

STATE_SETTLING同样,和 之间有什么区别STATE_DRAGGING

还有什么用STATE_HALF_EXPANDED

android coordinator-layout bottom-sheet android-bottomsheetdialog

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

使用 Jetpack Compose 导航时无法创建视图模型的实例

我在我的应用程序中使用导航组件进行 jetpack 组合,如下所示:

@Composable
fun FoodiumNavigation() {
    val navController = rememberNavController()

    NavHost(
        navController = navController,
        startDestination = Screen.Main.route,
    ) {
        composable(Screen.Main.route) {
            MainScreen(navController)
        }

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在像这样进入viewmodel我的MainScreen组合:

@Composable
fun MainScreen(navController: NavController) {
    val mainViewModel: MainViewModel = viewModel()
    ...
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个运行时异常作为Cannot create an instance of class com.package.main.MainViewModel.

在这里,我声明这仅在使用导航组件时发生,即一切正常,并且mainViewModel在我的应用程序中使用导航组件之前已成功实例化。

MainViewModel是这样的:

@ExperimentalCoroutinesApi
@HiltViewModel
class MainViewModel @Inject constructor(private val postRepository: PostRepository) :
    ViewModel() {

    private val _postsLiveDataState = MutableLiveData<UiState<List<Post>>>()
    val postLiveState: LiveData<UiState<List<Post>>> = …
Run Code Online (Sandbox Code Playgroud)

java android kotlin android-jetpack-navigation android-jetpack-compose

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

使用 android gradle 插件版本 7.0.0-alpha15 时无法使用 kotlin-gradle-dsl 脚本

我将我的 Android Studio Canary 更新到 version 2020 3.1 Canary 15,这也要求我将我的 AGP 更新到 version 7.0.0-alpha15。我正在使用kotlin-gradle-dsl我的 gradle 构建文件,这些文件现在无法使用Unresolved reference.

请注意,在更新到 version 之前,gradle 已成功构建7.0.0-alpha15

我的应用程序级别build.gradle.kts如下:

import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties

plugins {
    id("com.android.application")
    id("kotlin-android")
    id("kotlin-kapt")
    id("dagger.hilt.android.plugin")
}

val apiKey: String = gradleLocalProperties(rootDir).getProperty("API_KEY")

android {
    compileSdkVersion(30)
    buildToolsVersion("30.0.3")

    defaultConfig {
        applicationId("com.training.flicker")
        minSdkVersion(21)
        targetSdkVersion(30)
        versionCode(1)
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }

        buildConfigField("String", "API_KEY", apiKey)
    }

    buildTypes {
        release {
            minifyEnabled(false)
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro" …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin android-studio gradle-kotlin-dsl

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

我没有为androidx CoordinatorLayout和RecyclerView库添加依赖项,但仍然可以使用它

在我的项目中,我从未添加

implementation androidx.coordinatorlayout:coordinatorlayout但是我仍然可以用androidx.coordinatorlayout.widget.CoordinatorLayout在我的笔记本上activity_main.xml

build.gradle

apply plugin: 'com.android.application'

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.android.material:material:1.0.0'
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_height="192dp"
        android:layout_width="match_parent">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:toolbarId="@+id/toolbar" …
Run Code Online (Sandbox Code Playgroud)

java xml android android-gradle-plugin androidx

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

从改造 2.6.2 更新到改造 2.9.0 后 OkHttpClient.Builder() 中的 java.lang.NoSuchMethodError

早些时候,我在我的项目中使用改造版本 2.6.2来调用 api 服务,一切正常。我正在创建一个自定义Interceptor添加api key到每个请求的标头。

网络拦截器.kt

class NetworkInterceptor() : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {

        var request = chain.request()
            request = request.newBuilder()
                .addHeader("Authorization", "Client-ID ${NetworkConfig.CLIENT_ID}")
                .build()

        return chain.proceed(request)
    }
}
Run Code Online (Sandbox Code Playgroud)

我改装库更新到版本2.9.0和更新后改装版本2.9.0我收到java.lang.NoSuchMethodError该行OkHttpClient.Builder()同时加入InterceptorRetrofit.Builder()

api.kt

interface Api {

    @GET("photos")
    suspend fun getPhotos(
        @Query("page") pageNumber: Int,
        @Query("per_page") pageSize: Int,
        @Query("order_by") orderBy: String
    ) : Response<List<Photo>>

    @GET("photos/random")
    suspend fun getRandomPhoto() : Response<Photo>

    companion object{ …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-studio okhttp retrofit2

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