小编Hal*_*zel的帖子

Java 中如何使用“final”关键字进行向下转型

考虑:

class UnderstandingConversion {
    public static void main(String[] args) {

        int a=10, b=20;

        byte c = (a>b) ? 40 : 50;

        System.out.println(c);
        // output : lossy conversion error
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码给出了一个错误“有损转换”,我理解,但如果我final在代码中使用关键字,如下所示,它工作正常。

class UnderstandingConversion {
    public static void main(String[] args) {

        final int a=10, b=20;

        byte c = (a>b)? 40 : 50;

        System.out.println(c);
        // Output: 50

    }
}
Run Code Online (Sandbox Code Playgroud)

这里的工作情况如何final?向下转型是如何发生的?

java final

38
推荐指数
2
解决办法
2763
查看次数

在模块生命周期-viewmodel-2.5.0-runtime中发现重复的类 androidx.lifecycle.ViewModelLazy

我正在使用Android Studio Chipmunk | 2021.2.1 补丁 2。

当我使用该implementation 'androidx.appcompat:appcompat:1.5.0'版本时,出现以下错误。

在模块生命周期-viewmodel-2.5.0-runtime(androidx.lifecycle:lifecycle-viewmodel:2.5.0)和生命周期-viewmodel-ktx-2.3.1-runtime(androidx.lifecycle:lifecycle)中发现重复的类androidx.lifecycle.ViewModelLazy -viewmodel-ktx:2.3.1)在模块lifecycle-viewmodel-2.5.0-runtime(androidx.lifecycle:lifecycle-viewmodel:2.5.0)和lifecycle-viewmodel-ktx-2.3中找到重复的类androidx.lifecycle.ViewTreeViewModelKt。 1-运行时(androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1)

回滚到之前的implementation 'androidx.appcompat:appcompat:1.4.2'版本后就可以正常使用了。

build.gradle

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.halil.ozel.darkmode"
        minSdk 28
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures {
        dataBinding true
    }
}

dependencies …
Run Code Online (Sandbox Code Playgroud)

dependencies android build.gradle android-gradle-plugin

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

将 RememberSaveable 与 mutableStateListOf 结合使用

我正在尝试将可分割对象的可变列表添加到我的可组合项中。我还希望能够向其中添加对象和从中删除对象。

目前我正在使用这样的东西:

val names = remember { mutableStateListOf<String>() }

names.add("Bill")
names.remove("Bill")
Run Code Online (Sandbox Code Playgroud)

现在我希望这个列表在配置更改后继续存在,因此使用rememberSaveable. 也许是这样的:

val names = rememberSaveable { mutableStateListOf<String>() }

names.add("Bill")
names.remove("Bill")
Run Code Online (Sandbox Code Playgroud)

但这不起作用,它会抛出以下异常:

androidx.compose.runtime.snapshots.SnapshotStateList 无法使用当前的 SaveableStateRegistry 进行保存。默认实现仅支持可以存储在 Bundle 内的类型。请考虑为此类实现自定义 Saver 并将其传递给 RememberSaveable()。

这意味着SnapshotStateList( 的结果mutableStateListOf)不可保存。

到目前为止,我能想到几种解决这个问题的方法:

  1. 实际上实现了一个保护程序SnapshotStateList
  2. 使用类似的东西val namesState = rememberSaveable { mutableStateOf(listOf<String>()) }。这确实可以完美地工作,但是更新列表需要设置值,这既慢又不方便(例如,namesState.value = namesState.value + "Joe"仅添加单个元素)。

对于看似很小的任务来说,这两种方法似乎都太复杂了。我想知道做我想做的事的最好方法是什么。谢谢。

android android-jetpack-compose

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

Android API 33 权限未授予

因此,当我在developer.android 站点中读到时,它Android 13在“权限”字段中带来了新的更改。

我有一个聊天应用程序,我需要拨打电话、打开相机、录制音频、在外部存储中读取和写入。因此,在 SplashScreen 中,我向用户请求这些权限。然而,其中一些没有被授予,但甚至系统也没有向我索要这些。

AndroidManifest.xml这是我在文件中声明的内容

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature
        android:glEsVersion="0x00020000" …
Run Code Online (Sandbox Code Playgroud)

android runtime-permissions android-tiramisu android-13

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

如何在 BottomSheetDialog 上使用视图绑定

我正在尝试在 MainActivity 中创建一个 BottomSheetDialog,但现在我正在使用合成来绑定我的视图。但现在我被如何附加ViewBinding到我的BottomSheetDialog.

这就是我所做的,使用合成材料。

dialog = BottomSheetDialog(this, R.style.BottomDialogStyle)
dialogView = LayoutInflater.from(this).inflate(R.layout.test_dialog, dialog.mainContainer, false)
dialog.setContentView(dialogView)
Run Code Online (Sandbox Code Playgroud)

这就是让我困惑的地方ViewBinding

dialog = BottomSheetDialog(this, R.style.BottomDialogStyle)
binding = TestDialogBinding.inflate(?)
dialog.setContentView(binding.root)
Run Code Online (Sandbox Code Playgroud)

从上面的示例中,我想知道应该用什么填充参数,因为与在活动中我可以只用layoutInflater或在RecyclerView 适配器中填充该参数不同,而在适配器中我不能用

LayoutInflater.from(parent.context), parent, and false

android kotlin android-viewbinding android-bottomsheetdialog

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

它不知道 AndroidManifest.xml 中 Android SDK API 33 的某些属性

我使用 API 33 创建了一个新项目,但找不到某些字段。同时API 32也发现它没有问题。当我用 . 打开它时它会发出警告API 33

buid.gradle(My Application)

plugins {
    id 'com.android.application' version '7.2.1' apply false
    id 'com.android.library' version '7.2.1' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(:app)

android {
    compileSdk 33

    defaultConfig {
        applicationId "com.halil.ozel.myapplication"
        minSdk 24
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-studio android-api-levels

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

SwiftUI:如何使搜索栏成为第一响应者?

我想让搜索栏在视图出现后立即成为第一响应者。不幸的是,目前还没有@FocusState支持/其他调用来实现这个开箱即用的功能。还有其他方法可以实现这一目标吗?

struct SearchDemo: View {
    
    @State var searchString : String = ""
    
    var body: some View {
        NavigationView {
            List{
                Text("...")
            }
            .searchable(text: $searchString)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

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

9
推荐指数
2
解决办法
3088
查看次数

Gradle 同步失败:无法为锁定文件创建父目录

我在 android studio 中检查了 git 存储库,但遇到了错误Gradle sync failed

当项目想要构建时,android studio 会抛出如下错误:

Gradle sync failed: Could not create parent directory for lock file 
C:\Users\username\.gradle\wrapper\dists \gradle-4.10.1- 
all\455itskqi2qtf0v2sja68alqd\gradle-4.10.1-all.zip.lck
Run Code Online (Sandbox Code Playgroud)
  • 我看到了其他几乎相同问题的一些答案,但没有一个有帮助。
  • 我还根据上述路径删除了 .gradle 目录中的 cashes,但它不起作用。

我怎么解决这个问题?

感谢您解决这个问题,谢谢。

android gradle android-studio android-gradle-plugin android-studio-3.4

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

在 Flutter 中构建 iOS 应用程序时键入“ui.ViewConfiguration”未找到错误

错误:找不到类型“ui.ViewConfiguration”。

\n

在运行我的 flutter 项目时,我收到此错误并且构建失败。它在 Android 上运行良好,但仅在 ios 中运行时才发现问题。

\n
\n

无法构建 iOS 应用程序错误(Xcode):\n../../../../.pub-cache/hosted/pub.dev/printing-5.9.3/lib/src/widget_wrapper.dart:234 :9:\n错误:找不到类型\'ui.ViewConfiguration\'。\n../\xe2\x80\xa6/src/widget_wrapper.dart:234

\n
\n

无法为模拟器构建应用程序。\n在 iPhone 14 上启动应用程序时出错。\n已退出

\n

这是发生错误的代码。这是一个 .pubcache 文件。

\n
import \'dart:async\';\nimport \'dart:typed_data\';\nimport \'dart:ui\' as ui;\n\nimport \'package:flutter/material.dart\';\nimport \'package:flutter/rendering.dart\';\nimport \'package:flutter/widgets.dart\';\nimport \'package:pdf/pdf.dart\';\nimport \'package:pdf/widgets.dart\' as pw;\n\n/// ImageProvider that draws a Flutter Widget on a PDF document\nclass WidgetWraper extends pw.ImageProvider {\n  WidgetWraper._(\n    this.bytes,\n    int width,\n    int height,\n    PdfImageOrientation orientation,\n    double? dpi,\n  ) : super(width, height, orientation, dpi);\n\n  /// Wrap a Flutter Widget identified by a GlobalKey to an …
Run Code Online (Sandbox Code Playgroud)

ios dart flutter

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