我有一个带有文本字段的表单,如果我点击"保存",我想给它们一个红色边框但是例如在必填字段中没有输入,"生日"字段的字母,....
我的文件:EditController.java,error.css
我已经尝试过:
tfFirstName.getStyleClass().add("error");
Run Code Online (Sandbox Code Playgroud)
,如果他们输入有效的东西,删除它:
tfFirstName.getStyleClass().remove("error");
Run Code Online (Sandbox Code Playgroud)
并在CSS中:
.text-field.error {
-fx-border-color: red ;
-fx-border-width: 2px ;
}
Run Code Online (Sandbox Code Playgroud)
但它没有改变任何东西.
出奇,
tfFirstName.setStyle("-fx-border-color: red ; -fx-border-width: 2px ;");
Run Code Online (Sandbox Code Playgroud)
(以及一个空字符串来摆脱它)工作得很好但是如果我想稍后再添加更多它就不是"漂亮".
有谁知道如何修复CSS?
斯威夫特 5、Xcode 10
Xcode 记录了一个奇怪的错误,只有当我在做一些非常具体的事情时才会发生:
我的应用程序在单击“登录”按钮后连接到 FTP 服务器,但如果没有互联网连接,它会显示一个包含两个选项的对话框:1. 切换到离线模式,2. 重试。如果我选择“重试”,将设备连接到互联网,然后再次点击“登录”按钮,则会引发此错误。如果我切换到离线模式或者在点击“登录”按钮之前已经有互联网连接,则不会出现错误消息。
之后一切正常,但我仍然想摆脱它 - 如果可能的话:
2019-07-10 16:43:18.233414+0200 myapp[5256:111188] [] nw_dictionary_copy called with null dictionary
2019-07-10 16:43:18.235183+0200 myapp[5256:111188] [] __nwlog_err_simulate_crash simulate crash failed "nw_dictionary_copy called with null dictionary"
2019-07-10 16:43:18.237115+0200 myapp[5256:111188] [] nw_dictionary_copy called with null dictionary, dumping backtrace:
[x86_64] libnetcore-1229.250.15
0 libnetwork.dylib 0x000000010c35c3b8 __nw_create_backtrace_string + 120
1 libnetwork.dylib 0x000000010c2b74e3 nw_dictionary_copy + 643
2 libnetwork.dylib 0x000000010c2fffe8 __nw_path_watch_simulator_network_changes_block_invoke + 40
3 libsystem_notify.dylib 0x00000001090429b3 notify_register_mach_port + 7676
4 libdispatch.dylib 0x0000000108d82725 _dispatch_block_async_invoke2 + 83
5 libdispatch.dylib …Run Code Online (Sandbox Code Playgroud) 请在拒绝投票和/或将其标记为重复之前阅读整篇文章!
我正在开发一个应用程序,它从用户手机上的特定文件夹中读取文件 - 从 SD 卡(如果有的话)或从内置存储。是的,清单中提到了“READ_EXTERNAL_STORAGE”,我也在处理 API>23 的权限弹出窗口。
我曾经简单地使用
File folder = new File(Environment.getExternalStorageDirectory(), "myfolder");
Run Code Online (Sandbox Code Playgroud)
获取存储在内置存储(S7 为 32gb)中的文件夹的路径,但现在我想获取 SD 卡的路径。根据谷歌给我的几乎每一个结果,“Environment.getExternalStorageDirectory()”应该给你SD卡的路径,但对我来说它没有(而且从来没有)。
我已经用两个不同的三星 Galaxy S7 测试了以下内容,两者都使用 Android 7.0,一个带有 SD 卡(+ 文件夹),另一个没有(+ 文件夹):
Log.d(tag, System.getenv("EXTERNAL_STORAGE"));
Log.d(tag, System.getenv("SECONDARY_STORAGE"));
Log.d(tag, ""+new File(System.getenv("EXTERNAL_STORAGE")+File.separator+"myfolder").isDirectory());
Log.e(tag, ""+new File(System.getenv("EXTERNAL_STORAGE")+File.separator+ordner).getAbsolutePath());
Log.d(tag, Environment.isExternalStorageRemovable());
Log.d(tag, Environment.getExternalStorageDirectory());
Log.d(tag, Environment.getExternalStorageDirectory().getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,两部手机都输出相同的信息:
/sdcard
null
true
/sdcard/myfolder
false
/storage/emulated/0
/storage/emulated/0
Run Code Online (Sandbox Code Playgroud)
根据文件管理器应用程序(“我的文件”),内置存储称为“内部存储”,这更没有意义(我知道Android中内部存储和外部存储之间的区别)。
如何获取实际 SD 卡的路径(无需对其进行硬编码)?
android sd-card android-sdcard android-external-storage android-7.0-nougat
我在相对布局中使用微调器和其他几个布局元素 (layout-v21):
<Spinner
android:id="@+id/spinner"
android:layout_width="155dp"
android:layout_height="34dp"
android:layout_alignBottom="@+id/textList"
android:layout_alignTop="@+id/textList"
android:layout_alignParentEnd="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="0dp"
android:layout_toEndOf="@+id/textList"
android:paddingRight="1dp"/>
Run Code Online (Sandbox Code Playgroud)
这将设置到父布局结束位置的距离:
android:layout_marginRight="0dp"
android:layout_alignParentEnd="true"
Run Code Online (Sandbox Code Playgroud)
这设置了微调器内的选择项与箭头左侧的接近程度(文本的右侧填充):
android:paddingRight="1dp"
Run Code Online (Sandbox Code Playgroud)
但是有没有办法摆脱(或至少缩小)箭头右侧但仍在微调布局元素内的不必要的空间/填充(这样我就可以在左侧使用更多空间而无需更改微调器的大小)?
这就是我要说的:
编辑:这是RelativeLayout的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mycompany.myapp.MainActivity"
android:backgroundTint="#000000"
android:focusableInTouchMode="true">
Run Code Online (Sandbox Code Playgroud) 如果您将鼠标悬停///<summary></summary>在 VS17 (15.6.2) 中具有xml 文档 ( ) 的某些内容(类、方法等)上,您会看到这个小弹出窗口,其中显示了正确格式化的注释。
我试图列出一个清单(从这里复制):
/// <summary>Here is an example of a bulleted list:
/// <list type="bullet">
/// <item>
/// <description>Item 1.</description>
/// </item>
/// <item>
/// <description>Item 2.</description>
/// </item>
/// </list>
/// </summary>
Run Code Online (Sandbox Code Playgroud)
但是弹出窗口只在一行中显示它:
Here is an example of a bulleted list: Item 1. Item 2.
Run Code Online (Sandbox Code Playgroud)
我也尝试添加<term>它(就像这里),但我得到的只是:
我也试过其他type的(也没有),但没有改变。这是一个错误吗?我如何解决它?
AndroidStudio让我再次疯狂......我从Win 7 PC上获得了一个一年的AS项目(工作得很好)并想在我的Win 10工作站上添加东西,但即使AS说构建成功完成,它不会解决几个导入,导致大量的红色波浪线:
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
Run Code Online (Sandbox Code Playgroud)
是的,在"build.gradle"文件中有一个Maven条目,它直接位于项目文件夹中.
"app"gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.mycompany.myapp"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.+'
compile 'com.android.support:support-v4:23.0.3'
}
Run Code Online (Sandbox Code Playgroud)
第一个"编译"也有一条波浪线,消息说:
All com.android.support libraries must use the exact same version specification (mixing versions …Run Code Online (Sandbox Code Playgroud) 我已经在自己的文件(“ MyEnum.swift”)中得到了这个枚举(Xcode 10 / Swift 5):
enum MyEnum: Int, CaseIterable {
case A = 0
case B = 1
case C = 2
case D = 3
case E = 4
//Each case needs its own number and description!
var description: String {
switch self {
case .A:
return "abc"
case .B:
return "bcd"
case .C:
return "cde"
case .D:
return "def"
case .E:
return "efg"
}
}
}
Run Code Online (Sandbox Code Playgroud)
...,并希望将说明添加到中PickerView。我知道如何为视图设置功能,但现在我只能计算枚举用例并添加描述。
根据文档和不同的问题,添加CaseIterable应该可以进行呼叫
MyEnum.allCases.count
Run Code Online (Sandbox Code Playgroud)
...但是我只能allCases …
我写这个问题是因为 Stackoverflow(甚至 Apple 的开发者网站)上有关此主题的大量信息不幸部分已过时:
我想在 Xcode 12.5/Swift 5/iOS 12.3+ 应用程序中支持多种语言:德语作为默认语言,英语作为“后备”。
目前,“信息”选项卡列出了两种“本地化”语言:
Main.storyboardmy和file的文件检查器的“本地化”部分LaunchScreen.storyboard如下所示(默认情况下):
“Base”被选中,这就是为什么第一个屏幕截图显示了它的 2 个文件。
中的语言Info.plist设置如下:
到目前为止,我还没有触及实际的本地化设置,并且我一直在 XIB 中为每个标签使用相同的语言(可能保存在“Base”中)。
根据苹果旧的本地化指南,“Base”是使用的默认语言,只要它包含在用户的语言设置中(在我的例子中:德语)。“开发人员语言”是用户的语言设置不包括基本语言(在我的例子中:英语)时使用的“后备”语言。此问答页面还说:
如果您采用基本本地化,请确保 CFBundleDevelopmentRegion 的值与 Base.lproj 文件夹中的内容使用的语言匹配。
...并且在本指南中,为两个故事板启用“英语 - 开发语言”的基本本地化会向其中添加 2 个本地化文件,而实际上不会向列表中添加另一个(“基本”)本地化。正如您在我的第一个屏幕截图中看到的,“Base”和“Development”是单独的列表条目,而早期 Xcode 版本中并非如此。
我的第一个问题是:我是否正确理解了这一切?引用将“基础”和“开发语言”视为同一件事有点令人困惑,尽管您当然可以拥有不是“后备”语言的默认语言。
我上面链接的相同问答也详细介绍了特定语言的区域版本:
如果我的应用程序支持“德语”(语言代码:“de”),但用户的语言设置仅列出例如奥地利德语(“de_AT”),则应用程序仍会将其自己的语言设置为德语。假设我想使用瑞士德语 (de_CH) 作为默认语言,但用户在他的设置中只选择了奥地利德语 (“de_AT”),这仍然有效吗?您是否应该将应用程序的默认语言设置为常规非区域语言(德语 =“de”),即使标签...使用例如瑞士德语单词?
如何将“基本”语言更改为德语(比方说“de_CH”)并使其显示在列表中,同时使用英语(“en”)作为“后备”?我确实找到了类似的问题,但不幸的是,答案中描述的步骤在 Xcode 12.5 中的工作方式不同。不再了。
斯威夫特 5、Xcode 10、iOS 12
我的代码用于UIApplication.shared.canOpenURL验证 URL,不幸的是没有“http://”就失败了。
例子:
print(UIApplication.shared.canOpenURL(URL(string: "stackoverflow.com")!)) //false
print(UIApplication.shared.canOpenURL(URL(string: "http://stackoverflow.com")!)) //true
print(UIApplication.shared.canOpenURL(URL(string: "129.0.0.1")!)) //false
print(UIApplication.shared.canOpenURL(URL(string: "ftp://129.0.0.1")!)) //true
Run Code Online (Sandbox Code Playgroud)
我知道方案(iOS9+)的变化,我知道如果字符串尚未以“http://”开头,我可以添加前缀,然后检查这个新字符串,但我仍然想知道:
问题:我如何添加“没有方案”方案,以便像“stackoverflow.com”这样的有效 URL 也返回true(这是否可能?)?
我使用的是 Swift 5、Xcode 10 和 iOS 12。
我将“FilesProvider”(单击)作为 CocoaPod 添加到我的项目中并且它正在工作,但现在我想测试一些东西,为此我向print库的一个 .swift 文件中添加了几个s。
我是如何做到的:
Pods - Pods - FilesProvider在项目导航器中导航到prints不过,添加的prints 并未打印在控制台中。我很确定我将它们添加到我的应用程序正在使用的库中的函数中。
我是否必须使用任何特殊设置来显示printCocoaPod的s?
我目前正在 Xcode 10 Playground (Swift 5) 中测试此代码:
func one() {
let test = "bla"
two(test, completion: { (returned) in
print(returned)
})
}
func two(_ test: String, completion: @escaping (_ returned: String?) -> Void) {
DispatchQueue.global(qos:.background).async {
if !test.isEmpty {
//Some slow stuff
DispatchQueue.main.async {
return completion("hi!")
}
}
//Also some slow stuff
DispatchQueue.main.async {
return completion(nil) //can't have this in "else"!
}
}
}
one()
Run Code Online (Sandbox Code Playgroud)
问题是“hi”和“nil”都被打印了。
如果我摆脱线程,它工作得很好,但有了它,它似乎在DispatchQueue.main.async第一个线程有机会返回之前到达第二个线程。
在我的实际代码中的“一些缓慢的东西”中还有很多事情发生,if但我不能依赖在调用第二次返回之前花费足够长的时间来返回。
如何实现这一点:让函数在后台线程中运行,但在主线程上仅返回一次(就像通常没有线程的代码一样)?
ios completionhandler swift ios-multithreading dispatch-queue
今天我在Unity项目中遇到了一些有趣的C#代码:
MyScript ms = new MyScript(); //MyScript derives from MonoBehaviour
ms = null;
if(!ms) { Debug.Log("ms = "+(ms==null)); }
Run Code Online (Sandbox Code Playgroud)
它看起来似乎表现如下:
if(ms == null) { /*Do Stuff*/ }
Run Code Online (Sandbox Code Playgroud)
但它真的是一回事吗?我还没有找到任何关于此的文档.有没有理由不使用较短的版本或更喜欢一个?