在我的应用程序中有一个静态变量,当我从外部浏览器返回我的应用程序时,该变量被设置为null.如果我正在启动的外部网页足够复杂,似乎应用程序或其中某些部分被杀死.
如果应用程序被完全杀死然后从主要活动中重新启动就可以了,但重新启动来自启动浏览器的活动 - 并且它并不意味着设置应用程序状态以便在访问空静态变量时崩溃.这对我来说是一个六分之一的设备问题所以我需要一些建议.
是否有设置标志以防止此行为?
我选择了几个跟踪标记,当我运行跟踪(从DDMS)时,我得到以下输出:
Unexpected error while collecting system trace. Unable to find trace start marker 'TRACE:':
error opening /sys/kernel/debug/tracing/options/overwrite:
No such file or directory (2)
Run Code Online (Sandbox Code Playgroud)
error openi(在这里切断错误)
确实内核目录中没有调试文件,但哪种机制会生成必要的路径?
问题 - 向下滚动会导致底部工作表滚动,而不是为 LazyColumn 提供滚动优先级(RecyclerView 没有此问题。它被 NestedScrollView 包裹)
我刚刚介绍了用 Compose LazyColumn 替换 CoordinatorLayout 内的 Recycler。协调器(作为底部工作表实现)本身可以在查看状态和展开状态之间自由滚动。我的问题是,当在 LazyColumn 中向下拖动项目区域时,底部工作表会滚动而不是 LazyColumn 。如果我在 LazyColumn 上先向上滚动,然后向下滚动(不释放),则 LazyColumn 会拾取滚动,并且滚动优先级将赋予 LazyColumn(预期行为)。
BottomSheetFragment
|-CoordinatorLayout
|--ConstraintLayout (BottomSheetBehavior)
|---MyListFragment
|----ComposeView
|-----Theme
|------Surface
|-------Box
|--------LazyColumn
Run Code Online (Sandbox Code Playgroud)
刚接触 Compose,所以我希望有人能告诉我如何纠正这种新的滚动行为?
**编辑 我通过切换协调器的 ^^ BottomSheetBehavior.isDragglable 来完成这项工作,但它确实需要我释放拖动,而不是从列表滚动平滑过渡到底部工作表滚动 - 任何人建议修复?:
fun MyUi(listener:Listener) {
val listState = rememberLazyListState()
LaunchedEffect(listState) {
listState.interactionSource.interactions.collect {
//at the top of the list so allow sheet scrolling
listener.allowSheetDrag(listState.firstVisibleItemScrollOffset == 0)
}
}
val nestedScrollConnection = remember {
object : NestedScrollConnection {
override …Run Code Online (Sandbox Code Playgroud) android vertical-scrolling android-jetpack-compose lazycolumn
我注意到之前已经问过,但我还没有找到答案.这个问题的主要说明是,当apk部署为"运行"时,Eclipse会在断点处停止
到目前为止,我已经完成了这些,并且没有一个从Project shell生成正确运行的"Run"构建 - > Run As - > 1. Android Application
•断开连接,卸载和重新安装apk并不能解决问题(这是一个平板电脑设备,而不是模拟器.)•使用文件系统可以编写所有项目和库项目
•全新的项目正常工作,例如他们没有在与问题项目相同的Eclipse工作空间中的"运行"模式中停止断点
•窗口 - >首选项 - >运行/调试(展开) - >启动"当工作空间包含断点时在调试模式下启动"设置为永不
•关闭并打开Eclipse
•在该透视图中"调试"选项卡下杀死所有正在运行的进程
•在Eclipse IDE中清除整个工作区,并通过删除主项目库和库项目依赖项的res和gen文件夹手动清除
•检查事件项目构建文件中的"debug"一词
•使用以下命令从命令行清理构建项目:ant clean then ant release
有趣的是,当我从命令行清理构建然后新安装新的apk时,如果Eclipse打开,调试器将附加到正在运行的进程并在第一个断点处停止!如果Eclipse关闭,程序将使用标准的"Waiting for Debugger"对话框等待调试器.
因此,构建过程中的某些内容(尚未弄清楚所有文件涉及的内容)和/或.metadata中的某些内容和/或某些依赖性.
编辑 我在以下位置找到了一个文件:
C:\Projects\Mobile\Android\.metadata\.plugins\org.eclipse.debug.core\.launches\MyProjectName.launch
Run Code Online (Sandbox Code Playgroud)
在xml中:
<launchConfiguration type="com.android.ide.eclipse.adt.debug.LaunchConfigType">
Run Code Online (Sandbox Code Playgroud)
不知道它是否是一个线索,但如果我删除文件Eclipse将只用它替换它.
编辑
*确认项目在构建并从另一台机器运行时运行正常,因此我怀疑这是我的工作机器的Eclipse工作区导致了这个问题.也许我需要抛弃所有工作区的元数据并重新开始.
我正在尝试创建一个布局边框,其边角为正方形,内侧为圆形.我已经知道我需要创建一个由两个形状组成的.xml可绘制定义:一个具有笔划宽度和角半径,另一个仅具有笔划宽度:
可绘制/
round_border.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="4dp" android:color="#FF000000" />
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="4dp" />
<solid android:color="#FFC0C0C0" />
</shape>
Run Code Online (Sandbox Code Playgroud)
square_border.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="#FF000000" />
<solid android:color="#FFC0C0C0" />
</shape>
Run Code Online (Sandbox Code Playgroud)
这些中的每一个都作为边框独立工作,如下所示:
android:background="@drawable/round_border"
Run Code Online (Sandbox Code Playgroud)
但当他们中的任何一个或两个被添加到项目列表可绘制时,如下所示:
composite_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<layer-list>
<item android:drawable="@drawable/round_border"/>
<!-- <item android:drawable="@drawable/square_border"/> -->
</layer-list>
</shape>
Run Code Online (Sandbox Code Playgroud)
和:
android:background="@drawable/composite_border"
Run Code Online (Sandbox Code Playgroud)
布局的背景是完全黑色而不仅仅是黑色边框.
任何人都知道如何使图层列表适用于此任务?
所以我已经安装了maven,其中包含以下细节:
安装路径:
C:\Program Files\Apache Software Foundation\apache-maven-3.0.3
Run Code Online (Sandbox Code Playgroud)
环境变量:
JAVA_HOME C:\Progra~1\Java\jdk1.6.0_25
M2_HOME C:\Program Files\Apache Software Foundation\apache-maven-3.0.3
Run Code Online (Sandbox Code Playgroud)
用户大战:
M2 %M2_HOME%\bin
PATH %JAVA_HOME%\bin;%M2%;
Run Code Online (Sandbox Code Playgroud)
现在,从命令行
C:\>javac -version
javac 1.6.0_25
C:\>mvn -version
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/c
lassworlds/launcher/Launcher
Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.lau
ncher.Launcher
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClss(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.codehaus.plexus.classworlds.launcher.Launcher
. Program will exit.
Run Code Online (Sandbox Code Playgroud)
到目前为止,由于Eclipse,我已经完全不受Java命令行构建细节的限制,但看起来它在找到/ boot目录中的plexus-classworlds-2.4.jar时遇到了问题.我需要一些额外的路径信息吗?
谢谢!
在我的系统中,我需要捕获并发送单元格编辑的旧值和新值.我已经读过你可以通过检查事件DataGridCellEditEndingEventArgs的EditingElement来做到这一点:
_dataGrid.CellEditEnding += (sender, e) => {
var editedTextbox = e.EditingElement as TextBox;
if (editedTextbox != null)
MessageBox.Show("Value after edit: " + editedTextbox.Text);
}
Run Code Online (Sandbox Code Playgroud)
在我的例子中,数据是字典,因此EditingElement是ContentPresenter
var editedTextbox = e.EditingElement as ContentPresenter;
if (editedTextbox != null)
MessageBox.Show("Value after edit: " + editedTextbox.Content);
Run Code Online (Sandbox Code Playgroud)
内容是原始内容,而不是新编辑的值.
我怎样才能让它工作:
_dataGrid.SomeEvent(sender, e)->{
SendValues(e.oldCellValue, e.newCellValue);
}
Run Code Online (Sandbox Code Playgroud) 我在我的项目中指定了以下内容:
模
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version'
}
Run Code Online (Sandbox Code Playgroud)
项目
buildscript {
ext.kotlin_version = '1.3.0'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Run Code Online (Sandbox Code Playgroud)
包装纸
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
Run Code Online (Sandbox Code Playgroud)
Gradle同步完成没有错误,但是我的每次调用都是如此
GlobalScope.launch {}
Run Code Online (Sandbox Code Playgroud)
'launch'标有以下错误:
'不支持[无法使用api版本低于1.3的版本协同程序]'
我已经失效和清理重建 - 我错过了什么?
**编辑
我可以看到生成错误的位置:
科特林/编译器/前端/ SRC /组织/ JetBrains公司/科特林/决心/电话/跳棋/ coroutineCallChecker.kt
fun checkCoroutinesFeature(languageVersionSettings: LanguageVersionSettings, diagnosticHolder: DiagnosticSink, reportOn: PsiElement) {
if (languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)) {
if (languageVersionSettings.apiVersion < ApiVersion.KOTLIN_1_3) {
diagnosticHolder.report(Errors.UNSUPPORTED.on(reportOn, "cannot use release coroutines with api version less than 1.3"))
}
return
}
Run Code Online (Sandbox Code Playgroud) 对于Activity,我有两个不同的纵向和横向布局文件.一个方向的元素与另一个方向的元素有直接关系,除了它们可能与基类相关但不是完全相同的类型,并且它们具有相同的id.例如:
布局/ main_layout.xml:
...
<ListView
android:id="@+id/current_news_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
Run Code Online (Sandbox Code Playgroud)
然后在layout-land/main_layout.xml中:CustomListView是android.widget.AdapterView的子类
...
<CustomListView
android:id="@+id/current_news_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
Run Code Online (Sandbox Code Playgroud)
更改方向时会抛出"IllegalArgumentException:错误的状态类".这是预期的行为吗?我没有覆盖配置更改代码,我让活动被彻底销毁和重建.我已避免在布局层次结构中同时具有相同标识符的其他实例.
我已经用谷歌搜索并尝试了示例,但我无法执行绑定 FrameLayout 宽度和高度。其他绑定工作正常。
最终解决方案: 示例项目:https : //github.com/jchristof/SimpleDatabindingExample
面板.xml:
<layout>
<data class="PanelControlBinding">
<variable
name="panel"
type="com.example.viewmodels.ContainerViewModel"/>
</data>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@{panel.width}"
android:layout_height="@{panel.height}"
android:translationX="@{panel.left}"
android:translationY="@{panel.top}"
android:background="@{panel.background}"
>
</FrameLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
binding.kt kotlin 文件
@BindingAdapter("android:layout_width")
fun setLayoutWidth(view: View, width: Int) {
val layoutParams = view.layoutParams
layoutParams.width = width
view.layoutParams = layoutParams
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了许多关于宽度类型的排列(将其设置为 Float)以及删除 android: 命名空间,将 setLayoutWidth 声明为静态伴随对象等。
我继续收到错误:
Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'android:layout_width' with parameter type java.lang.Integer on android.widget.FrameLayout.
file:D:\Projects\strandXmlAppRunner\app\src\main\res\layout\panel.xml
loc:9:32 - 9:42
****\ …Run Code Online (Sandbox Code Playgroud)