在每次浓缩咖啡测试之前,我都有一个注释@Before,用于初始化RealmManager.realm。
我的代码段object Realm:
init {
Realm.init(SaiApplication.context)
val builder = RealmConfiguration.Builder().schemaVersion(SCHEMA_VERSION)
builder.migration(runMigrations())
if (!BuildConfig.DEBUG) builder.encryptionKey(getOrCreateDatabaseKey())
if (SaiApplication.inMemoryDatabase) builder.inMemory()
Realm.setDefaultConfiguration(builder.build())
try {
errorOccurred = false
realm = Realm.getDefaultInstance()
} catch (e: Exception) {
errorOccurred = true
realm = Realm.getInstance(RealmConfiguration.Builder()
.schemaVersion(SCHEMA_VERSION).name(errorDbName).build())
e.log()
deleteRealmFile(realm.configuration.realmDirectory)
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行测试时,出现下一个错误:
来自错误线程的领域访问。只能在创建对象的线程上访问领域对象
那么,如何在测试中正确初始化自己的境界?
我发现很有趣的解决方案之一,是创建一个虚假的init领域。
有下一个导入:
import androidx.appcompat.app.AlertDialog
Run Code Online (Sandbox Code Playgroud)
并创建对话框如下:
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val adb = AlertDialog.Builder(activity!!)
.setTitle(R.string.actions_rename_connection)
.setPositiveButton(R.string.actions_ok, this)
.setNegativeButton(R.string.actions_cancel, this)
val view = LayoutInflater.from(activity).inflate(R.layout.dialog_edit_name, null)
val dialog = adb.setView(view).create()
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
return dialog
}
Run Code Online (Sandbox Code Playgroud)
但我并不满意activity!!。
例如,使用另一个导入我创建对话框如下:
import android.app.AlertDialog
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return AlertDialog.Builder(activity, R.style.MaterialThemeDialog)
.setTitle(R.string.in_app_settings_language)
.setPositiveButton(R.string.actions_ok) { _, _ -> presenterContract.onOkClick() }
.setNegativeButton(R.string.actions_cancel) { _, _ -> closeView() }
.create()
}
Run Code Online (Sandbox Code Playgroud)
问:我们可以activity在 androidx 中使用一些解决方案吗?
当我关闭互联网连接并从 Firebase 应用注销时,我无法退回我的应用。
还得到下一个错误:
2019-11-05 20:26:19.364 5593-5611/com.mandarine.target_list E/System:
Uncaught exception thrown by finalizer 2019-11-05 20:26:19.3655593-5611/com.mandarine.target_list E/System:
java.lang.NullPointerException: Null reference used for synchronization (monitor-enter)
at com.android.org.conscrypt.ConscryptFileDescriptorSocket.finalize(ConscryptFileDescriptorSocket.java:1053)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:252)
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:239)
at java.lang.Daemons$Daemon.run(Daemons.java:105)
at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)
它仅在我关闭 Internet 时发生。
我也发现了这个:https : //github.com/google/conscrypt/blob/master/common/src/main/java/org/conscrypt/ConscryptFileDescriptorSocket.java#L1079
但真的不知道该怎么做必须得到
我也做了/gradlew app:androidDependencies并得到:
> releaseUnitTestRuntimeClasspath - Dependencies for runtime/packaging
> +--- org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.50@jar
> +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50@jar
> +--- com.firebaseui:firebase-ui-auth:4.3.1@aar
> +--- androidx.navigation:navigation-ui-ktx:2.0.0@aar
> +--- androidx.navigation:navigation-ui:2.0.0@aar
> +--- com.google.android.material:material:1.0.0@aar
> +--- me.zhanghai.android.materialprogressbar:library:1.4.2@aar
> +--- androidx.appcompat:appcompat:1.0.2@aar
> +--- androidx.constraintlayout:constraintlayout:1.1.3@aar
> +--- …Run Code Online (Sandbox Code Playgroud) android garbage-collection finalizer nullpointerexception kotlin
出现以下描述的崩溃:
由 java.security.UnrecoverableKeyException 引起:无法在 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePublicKeyFromKeystore(AndroidKeyStoreProvider.java:263) 处获取 X.509 形式的公钥 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyPairFromKeystore(AndroidKeyStoreProvider.java: 303) 在 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePrivateKeyFromKeystore(AndroidKeyStoreProvider.java:324) 在 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:388) 在 android.security.keystore.AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi.java :105)在java.security.KeyStore.getKey(KeyStore.java:1062)在com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.getKeyPair(KeyStoreManager.java:117)在com.mandarine.sai.sdk。 tools.keystore.KeyStoreManager.deleteKeyPairs(KeyStoreManager.java:222) 位于 com.mandarine.sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:73) 位于 com.mandarine.sai.features.authorizations.common。 ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:41) 在 com.mandarine.sai.features.authorizations.list.AuthorizationsListViewModel.(AuthorizationsListViewModel.java:79) 在 com.mandarine.sai.app.ViewModelsFactory.create(ViewModelsFactory.java:102 )
KeyStoreException:无效的密钥 blob
由 android.security.KeyStoreException 引起:android.security.keystore.getKeyStoreException(KeyStore.java:1301) 处的 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePublicKeyFromKeystore(AndroidKeyStoreProvider.java:265) 处的密钥 blob 无效。 AndroidKeyStoreProvider.loadAndroidKeyStoreKeyPairFromKeystore(AndroidKeyStoreProvider.java:303) 在 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePrivateKeyFromKeystore(AndroidKeyStoreProvider.java:324) 在 android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyFromKeystore(AndroidKeyStoreProvider.java:388) 在 android.security.keystore .AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi.java:105) 在 java.security.KeyStore.getKey(KeyStore.java:1062) 在 com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.getKeyPair(KeyStoreManager.java:117) 在com.mandarine.sai.sdk.tools.keystore.KeyStoreManager.deleteKeyPairs(KeyStoreManager.java:222) 位于 com.mandarine.sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:73) 位于 com.mandarine。 sai.features.authorizations.common.ConnectionKeyBuilderKt.collectConnectionsAndKeys(ConnectionKeyBuilderKt.java:41) 在 com.mandarine.sai.features.authorizations.list.AuthorizationsListViewModel.(AuthorizationsListViewModel.java:79) 在 com.mandarine.sai.app.ViewModelsFactory .create(ViewModelsFactory.java:102) 在 androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:187) 在 androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150) 在 com.mandarine.sai.features.authorizations。 list.AuthorizationsListFragment.setupViewModel(AuthorizationsListFragment.java:119)在com.mandarine.sai.features.authorizations.list.AuthorizationsListFragment.onCreate(AuthorizationsListFragment.java:65)在androidx.fragment.app.Fragment.performCreate(Fragment.java:第2684章)
这是代码:
fun collectConnectionsAndKeys(
repository: ConnectionsRepositoryAbs,
keyStoreManager: KeyStoreManagerAbs
): Map<ConnectionID, ConnectionAndKey> {
return …Run Code Online (Sandbox Code Playgroud) 我有下一个屏幕:
@ExperimentalMaterialApi
@Composable
fun AccountListScreen(
navController: NavController,
viewModel: AccountListViewModel = hiltViewModel()
) {
Run Code Online (Sandbox Code Playgroud)
我想预览这个屏幕。
我正在尝试按以下方式执行此操作:
@ExperimentalMaterialApi
@Preview(showBackground = true, backgroundColor = 0xFFFFFF, showSystemUi = true)
@Composable
fun AccountListScreenPreview() {
AccountListScreen(
navController = rememberNavController(),
viewModel = hiltViewModel()
)
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我在尝试构建预览时收到以下错误:
java.lang.IllegalStateException:预览版不支持 ViewModels 创建
如何解决这个问题呢?这也是我的一些课程的代码
如何以及在哪里可以禁用 ktlint 中的文件名?
我不想重命名这个类,但得到下一个错误:
接口 MainActivityContract 应在名为 MainActivityContract.kt 的文件中声明(不能自动更正)
在我的活动中,我尝试调用该方法,但 Android Studio 没有看到该方法
WindowCompat.setDecorFitsSystemWindows(window, false)
Run Code Online (Sandbox Code Playgroud)
我也使用这个导入:
import androidx.core.view.WindowCompat
Run Code Online (Sandbox Code Playgroud) lottie我知道我可以使用 跟踪动画完成的时刻progress。但问题是我想在动画完全完成的那一刻开始一个新的屏幕。
这是我的动画的代码
@Composable
fun AnimatedScreen(
modifier: Modifier = Modifier,
rawId: Int
) {
Box(
contentAlignment = Alignment.Center,
modifier = modifier.fillMaxSize()
) {
val compositionResult: LottieCompositionResult = rememberLottieComposition(
spec = LottieCompositionSpec.RawRes(rawId)
)
AnimatedScreenAnimation(compositionResult = compositionResult)
}
}
@Composable
fun AnimatedScreenAnimation(compositionResult: LottieCompositionResult) {
val progress by animateLottieCompositionAsState(composition = compositionResult.value)
Column {
if (progress < 1) {
Text(text = "Progress: $progress")
} else {
Text(
modifier = Modifier.clickable { },
text = "Animation is done"
)
}
LottieAnimation(
composition …Run Code Online (Sandbox Code Playgroud) youtube中视频的缩略图
我想添加从视频添加图像的功能,我在我的方法useLinkInput中获得.
现在我有一个对话框,其中有下一个代码:
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(getContext(), "??", Toast.LENGTH_SHORT).show();
String string = input.getText().toString();
useLinkInput(string);
}
Run Code Online (Sandbox Code Playgroud)
方法useLinkInput:
private void useLinkInput(String input) {
Uri uri = Uri.parse(input);
String videoID = uri.getQueryParameter("v");
url = "http://img.youtube.com/vi/" + videoID +"/0.jpg";
Log.d("url",url);
}
Run Code Online (Sandbox Code Playgroud)
当用户在对话框中粘贴链接并按下确定时,我会进入日志图像:
D/url: http://img.youtube.com/vi/null/0.jpg
Run Code Online (Sandbox Code Playgroud)
但他是空的*(没有显示图像)
连接我的模块并在build.gradle接下来写:
plugins {
id("org.jlleitschuh.gradle.ktlint")
kotlin("jvm")
}
dependencies {
compileOnly(kotlin("stdlib"))
compileOnly(kotlin("reflect"))
compileOnly(kotlin("script-runtime"))
compileOnly("com.pinterest.ktlint:ktlint-core:0.34.2")
}
Run Code Online (Sandbox Code Playgroud)
并得到下一个错误:
启动失败:构建文件“/home/vadimm/AndroidStudioProjects/homework/target-list/custom_ktlint_rules/build.gradle”:3:插件{}脚本块中只允许调用 id(String) 方法
有关 plugins {} 块的信息,请参阅 https://docs.gradle.org/5.1.1/userguide/plugins.html#sec:plugins_block
@ 第 3 行,第 5 列。kotlin("jvm") ^
1 错误
也试过这样写:
apply plugin: 'kotlin'或
plugins {
id 'kotlin'
}
Run Code Online (Sandbox Code Playgroud)
但它没有成功
现在我有下一个矩形:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="28dp" />
<gradient
android:endColor="#FFFFFF"
android:gradientRadius="20dp"
android:startColor="#FFFFFF"
android:type="linear" />
<size
android:width="106dp"
android:height="106dp" />
<stroke
android:width="1dp"
android:color="#0189ff" />
</shape>
Run Code Online (Sandbox Code Playgroud)
并得到下一个结果:
问:如何添加阴影/高程而不是描边?
android ×11
kotlin ×6
androidx ×1
build.gradle ×1
crash ×1
crashlytics ×1
dagger-hilt ×1
editorconfig ×1
finalizer ×1
git ×1
git-branch ×1
gradle ×1
iterm2 ×1
java ×1
lottie ×1
macos ×1
realm ×1
shapes ×1
xml ×1
youtube ×1