当Android AlertDialog显示时,此对话框周围的背景会变暗.这可能是通过首先用半透明颜色填充整个屏幕然后在其上面放置一个对话框来实现的.
我的问题是:背景填充的默认颜色是什么?
#88666666 //looks close, but not enough
Run Code Online (Sandbox Code Playgroud) 我有一个Android库(称为api)gradle模块作为一个较大项目的一部分。我只是将整个项目迁移到AndroidX。我现在在apilib 上运行检测测试时遇到此错误:
Task :api:checkDebugAndroidTestDuplicateClasses FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':api:checkDebugAndroidTestDuplicateClasses'.
> 1 exception was raised by workers:
java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class com.google.common.util.concurrent.ListenableFuture found in modules jetified-guava-25.1-android.jar (com.google.guava:guava:25.1-android) and listenablefuture-1.0.jar (com.google.guava:listenablefuture:1.0)
Run Code Online (Sandbox Code Playgroud)
如果我检查debugAndroidTest变体的运行时类路径:
./gradlew api:dependencies --configuration debugAndroidTestRuntimeClasspath | grep --color -E "guava|$"
Run Code Online (Sandbox Code Playgroud)
我得到这个输出。我可以看到问题:
------------------------------------------------------------
Project :api
------------------------------------------------------------
debugAndroidTestRuntimeClasspath - Resolved configuration for runtime for variant: debugAndroidTest
+--- project :test_utils
| +--- project :core
...
| +--- …Run Code Online (Sandbox Code Playgroud) 我有一些我想用Robolectric测试的代码.基本上我想测试一个按钮点击启动一个活动.
HomeScreenFragment.java:
public class HomeScreenFragment extends Fragment {
private Button mSignInButton;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState); // call to super class
}
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup parent,
Bundle savedInstanceState){
// inflate view
View view = inflater.inflate(R.layout.fragment_home_screen, parent, false);
// handle sign in button
mSignInButton = (Button)view.findViewById(R.id.sign_in_button);
mSignInButton.setOnClickListener(new View.OnClickListener() {
// anonymous inner class
@Override
public void onClick(View view) {
Intent intent = new Intent(getActivity(), SignInActivity.class);// start sign in activity with intent
startActivity(intent); // <<== ERROR HERE WHEN …Run Code Online (Sandbox Code Playgroud) 我有一个现有的QT Creator项目.我想为这个项目添加一个完整的目录.我看到我可以右键单击项目文件浏览器树和"添加现有文件..."但是通过此对话框,我只能添加单个文件.如何包含整个目录?
我有一个包含三个模块的Gradle项目,每个模块都对下一个模块具有嵌套依赖性:
android app module, which depends on...
android lib module, which depends on ...
java lib module (called core)
Run Code Online (Sandbox Code Playgroud)
在我的lib模块中,我正在尝试创建一个自定义任务(生成javadoc,但这可能不相关)
库/的build.gradle:
apply plugin: 'com.android.library'
android {
...
}
android.libraryVariants.all { variant ->
task("${variant.name}Docs", type: Javadoc) {
failOnError true
source = variant.javaCompiler.source
classpath = files(((Object) android.bootClasspath.join(File.pathSeparator)))
classpath += files(variant.javaCompiler.classpath.files) // THIS LINE IS CAUSING ERROR
}
}
dependencies {
implementation project(':core')
...
}
Run Code Online (Sandbox Code Playgroud)
问题是当我运行任何Gradle任务(甚至是Gradle clean)时,我收到一个关于找不到core.jar的错误
org.gradle.api.ProjectConfigurationException:配置项目':library'时出现问题.
引起:org.gradle.api.artifacts.transform.ArtifactTransformException:无法使用转换JarTransform转换文件'core.jar'以匹配属性{artifactType = android-classes}
引起:org.gradle.api.InvalidUserDataException:转换输出文件******/core/build/libs/core.jar不存在.
我猜这种情况正在发生,因为Gradle在配置阶段正在寻找所需的所有文件库的类路径(包括core.jar).但为什么?
为什么gradle只在执行期间解析依赖关系?(即为什么我会为每个 gradle任务看到这个错误?)
在执行此自定义任务之前,如何告诉gradle构建core.jar ?
我有一堆端到端仪器测试(依赖于 Espresso),它们启动我们的启动器活动,然后在我们的应用程序中导航(最终创建多个活动)。在每次测试结束时,我们@After带注释的拆卸方法都会执行一些清理工作。
我们遇到的问题是,测试完成(成功或失败的断言)后,应用程序仍在“运行”,因此某些清理实际上导致应用程序崩溃。如果断言成功,这会导致误报,或者隐藏测试失败(我们只看到崩溃而不是失败的断言)。
这是一个例子:
import android.app.Instrumentation;
import android.content.Intent;
import android.preference.PreferenceManager;
import android.support.test.InstrumentationRegistry;
import android.support.test.rule.ActivityTestRule;
import com.example.SplashActivity;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import static android.support.test.InstrumentationRegistry.getInstrumentation;
public class ExampleTest {
@Rule
public ActivityTestRule<SplashActivity> splashActivityTestRule
= new ActivityTestRule<>(SplashActivity.class, true, false);
Instrumentation.ActivityMonitor splashActivityMonitor;
@Before
public void setUp() {
splashActivityMonitor = new Instrumentation.ActivityMonitor(SplashActivity.class.getName(), null, false);
getInstrumentation().addMonitor(splashActivityMonitor);
}
@Test
public void someTest() throws Exception {
// ... other test-specific setup before starting splash activity
// start first activity
splashActivityTestRule.launchActivity(new …Run Code Online (Sandbox Code Playgroud) 使用RESTMock我们运行仪器测试时出现此错误
java.lang.NoSuchMethodError: No static method copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; in class Lkotlin/collections/ArraysKt; or its super classes (declaration of 'kotlin.collections.ArraysKt' appears in /data/app/com.example.debug-1/base.apk)
FATAL EXCEPTION: pool-6-thread-1
Process: com.example.debug, PID: 6606
java.lang.NoSuchMethodError: No static method copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;IIIILjava/lang/Object;)[Ljava/lang/Object; in class Lkotlin/collections/ArraysKt; or its super classes (declaration of 'kotlin.collections.ArraysKt' appears in /data/app/com.example.debug-1/base.apk)
at okhttp3.tls.internal.TlsUtil.newKeyManager(TlsUtil.kt:84)
at okhttp3.tls.HandshakeCertificates$Builder.build(HandshakeCertificates.kt:144)
at io.appflate.restmock.SslUtils.localhost(SslUtils.java:49)
at io.appflate.restmock.RESTMockServer.setUpHttps(RESTMockServer.java:91)
at io.appflate.restmock.RESTMockServer.init(RESTMockServer.java:74)
at io.appflate.restmock.RESTMockServerStarter$1.run(RESTMockServerStarter.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
Run Code Online (Sandbox Code Playgroud)
IIUC,Kotlin 可以把 avarargs当作 Kotlin Array 然后调用像copyInto这样的扩展函数
我们使用 OkHttp 4.0.1、Kotlin 1.3.40、R8 1.5.41
我们的测试 …
我有一个lazyColumn,我想在列中使用它,但出现以下错误并且应用程序崩溃:
不允许在相同方向的布局中嵌套可滚动的布局,例如 LazyColumn 和 Column(Modifier.verticalScroll())。如果您想在项目列表之前添加标题,请查看 LazyColumn 组件,该组件具有 DSL api,允许首先通过 item() 函数添加标题,然后通过 items() 添加项目列表
lazyColumn 代码,我在此代码中有一个列表:
@Composable
fun UpScreenSection(
modifier: Modifier,
state: ProfileState,
viewModel: ProfileViewModel
) {
Spacer(modifier = Modifier.size(24.dp))
Column(
modifier = modifier
.fillMaxSize()
.padding(24.dp)
) {
if (!state.items.isNullOrEmpty()) {
Box(
modifier = modifier
.fillMaxSize()
) {
LazyColumn(modifier = modifier.fillMaxSize()) {
items(state.items) { item ->
ProfileListItems(item = item, onItemClick = {
//TODO Navigate to specific screen
when (it.id) {
1 -> {
}
2 -> {
}
3 -> { …Run Code Online (Sandbox Code Playgroud) 当我在代码中使用指针时,我并不总是记得我正在处理的是指针还是它们指向的对象。所以,我想将我的指针称为“pointerToXYZ”。官方风格指南(官方风格指南的链接)是否描述了指针命名约定?
更新:好的,我已经提出了一个更具体的问题;希望它能重新开放。如果答案是简单的“不”,那么我会接受。
我知道,如果我在Activity上设置了支持v7工具栏,我可以在覆盖之前对溢出菜单进行更改 onPrepareOptionsMenu()
但是我有一个独立的支持v7工具栏.我仍然希望显示溢出菜单,并能够在打开之前更新它.我知道如何显示它...
Toolbar toolbar = ...
toolbar.inflateMenu(R.menu.my_menu);
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
...但是如何在溢出菜单打开之前进行更改?
android ×7
gradle ×2
java ×2
androidx ×1
c++ ×1
dependencies ×1
dereference ×1
google-truth ×1
guava ×1
jar ×1
kotlin ×1
okhttp3 ×1
pointers ×1
qt ×1
qt-creator ×1
robolectric ×1