小编Nep*_*eph的帖子

JavaFX:文本字段的红色边框

我有一个带有文本字段的表单,如果我点击"保存",我想给它们一个红色边框但是例如在必填字段中没有输入,"生日"字段的字母,....

我的文件: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?

text field javafx border

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

使用空字典调用 nw_dictionary_copy

斯威夫特 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)

null dictionary ios swift

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

获取 SD 卡的路径

请在拒绝投票和/或将其标记为重复之前阅读整篇文章!

我正在开发一个应用程序,它从用户手机上的特定文件夹中读取文件 - 从 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

5
推荐指数
1
解决办法
6693
查看次数

Android/Spinner:删除箭头右侧的填充

我在相对布局中使用微调器和其他几个布局元素 (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)

layout android padding spinner android-layout

5
推荐指数
1
解决办法
3170
查看次数

Visual Studio 2017:&lt;list&gt; 在悬停时未正确显示(xml 文档)

如果您将鼠标悬停///<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的(也没有),但没有改变。这是一个错误吗?我如何解决它?

c# xml-comments visual-studio visual-studio-2017

5
推荐指数
1
解决办法
299
查看次数

Android Studio:无法解析导入(android.support.*)

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)
  • Android Studio:2.1.3
  • 构建工具:25.0.2(在安装AS之前安装),23.0.3(在第一次出错后安装),27.0.3(安装在其他2之后)
  • API:19,21,23,24
  • Android支持存储库47

是的,在"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)

java import android android-support-library android-studio

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

枚举:计算并列出所有案例(从外部!)

我已经在自己的文件(“ 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 …

enums ios swift

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

如何在 Xcode 12(.5) 中设置基本本地化和开发语言?

我写这个问题是因为 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 中的工作方式不同。不再了。

xcode localization ios

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

验证没有方案的 URL

斯威夫特 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(这是否可能?)?

xcode url-validation ios swift

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

Xcode/Swift:显示我添加到 CocoaPod 的“打印”

我使用的是 Swift 5、Xcode 10 和 iOS 12。

我将“FilesProvider”(单击)作为 CocoaPod 添加到我的项目中并且它正在工作,但现在我想测试一些东西,为此我向print库的一个 .swift 文件中添加了几个s。

我是如何做到的:

  • Pods - Pods - FilesProvider在项目导航器中导航到
  • 在那里打开正确的 .swift 文件
  • 添加prints
  • 解锁文件(Xcode 询问我是否想要这样做)并保存它
  • 在模拟器中运行我的应用程序

不过,添加的prints 并未打印在控制台中。我很确定我将它们添加到我的应用程序正在使用的库中的函数中。

我是否必须使用任何特殊设置来显示printCocoaPod的s?

xcode ios cocoapods swift

0
推荐指数
1
解决办法
989
查看次数

完成处理程序被调用两次(使用线程)

我目前正在 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

0
推荐指数
1
解决办法
3874
查看次数

"if(!myobject)"是否与"if(myobject == null)"相同?

今天我在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)

但它真的是一回事吗?我还没有找到任何关于此的文档.有没有理由不使用较短的版本或更喜欢一个?

c# unity-game-engine

-2
推荐指数
1
解决办法
105
查看次数