小编alt*_*ser的帖子

为什么 KeyListener.onKey 触发两次?

我想处理对屏幕键盘“确定”键的点击。为此,我在文本字段中添加了一个 KeyListener:

textField = (EditText) view.findViewById(R.id.text_field);
textField.setOnKeyListener(new OnKeyListener() {
  @Override
  public boolean onKey(View view, int keyCode, KeyEvent event) {
    boolean handled = false;
    if (keyCode == KeyEvent.KEYCODE_ENTER) {
      okPressed(view);
      handled = true;
    }
    return handled;
  }
});
Run Code Online (Sandbox Code Playgroud)

在 okPressed 方法中,我正在检查内容:

private void okPressed(View view) {
  String value = textField.getText().toString().trim();
  if (value.equals("")) {
    Toast.makeText(view.getContext(), "Error", Toast.LENGTH_SHORT).show();
    return;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在对于我的文本字段不为空的情况,一切正常。但是在字段不包含文本的情况下,我的 okPressed 方法会执行两次。但为什么?

java android keylistener

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

具有动态列名的SQL SELECT语句

我尝试选择名称为其他列内容的列。我正在使用MySQL 5.6。

假设我有“ table1”:

+------+------------+------------+---------------+---------------+
|  id  |  val_int1  |  val_int2  |  val_string1  |  val_string2  |
+------+------------+------------+---------------+---------------+
|  1   |  70        |  88        |  xxx          |  yyy          |
+------+------------+------------+---------------+---------------+
Run Code Online (Sandbox Code Playgroud)

和“ table2”:

+------+--------+----------+
|  id  |  type  |  ref_id  |
+------+--------+----------+
|  10  |  i1    |  1       |
|  20  |  s2    |  1       |
+------+--------+----------+
Run Code Online (Sandbox Code Playgroud)

我想要做的是:将table1和table2连接起来,table2.type字段包含要选择的table1中的列的名称。还有一个问题,类型字段仅包含我必须扩展的缩写。
这以以下SQL语句结束:

SELECT
    t1.id,
    IF(t2.type REGEXP 'i[0-9]+', REPLACE(t2.type, 'i', 'val_int'), REPLACE(t2.type, 's', 'val_string'))
FROM
    table1 t1, table2 t2
WHERE
    t1.id = t2.ref_id AND t1.id = …
Run Code Online (Sandbox Code Playgroud)

mysql sql select

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

在 Delphi 中显示多行文本的组件

我是一名 Delphi 程序员,我正在尝试编写一个应用程序,我想在其中显示来自 telnet 服务器的文本。为了输入要发送的命令,我使用了 TLabeledEdit,为了接收数据,我使用了 TIdTelnet。到目前为止,这没有任何问题。但是我应该使用哪个组件来显示文本以便输出看起来像控制台窗口?我应该使用多行 TLabel 并将其放入 TScrollBox 或 TMemo 并将 TabStop 属性设置为 False 还是有更好的解决方案?

delphi text components

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

无法在iOS锁定屏幕上显示播放器控件

我在锁定屏幕(iOS 11.2)上显示播放器控件时遇到问题。我已经完成的工作如下:

在AppDelegate.swift中,我初始化了AVAudioSession:

import MediaPlayer

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UIApplication.shared.beginReceivingRemoteControlEvents()
    do {
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
      try AVAudioSession.sharedInstance().setActive(true)
    } catch {
    }
    return true
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,我的应用程序由一个具有多个视图的TabHostController组成。其中之一是音频选项卡。在那里,我尝试处理远程按钮:

import UIKit
import Foundation
import MediaPlayer

class AudioTabViewController: UIViewController {
  override func viewDidLoad() {
    super.viewDidLoad()

    let commandCenter = MPRemoteCommandCenter.shared()
    commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
      self.audioPlayClicked()
      return .success
    }
    commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
      self.audioPauseClicked()
      return .success
    }
    commandCenter.stopCommand.addTarget { (event) …
Run Code Online (Sandbox Code Playgroud)

audio ios swift

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

通过 applescript 在 Finder 中打开信息窗口

我在找到正确的苹果脚本命令时遇到一些问题:我想打开给定文件或文件夹的信息窗口。我可以在 Finder 中通过 cmd+i 打开该窗口。现在我希望能够通过脚本文件自动执行此操作。我的代码实际上是这样的:

set aFile to POSIX file "/Users/xyz/Documents/test.rtf"
tell application "Finder" to open information window of aFile
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。错误消息表明文件“Macintosh HD 的信息窗口:Users:xyz:Documents:test.rtf”无法打开。

applescript finder

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

使用未声明的类型“XMLDocument”

我想处理 XML 文档,并在 Foundation 包中找到了 XMLDocument 类,这似乎足以满足我的目的。但是我在使用它时遇到了一些问题。我有以下 Swift 代码:

import UIKit
import Foundation

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let doc = XMLDocument()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试编译这个小程序,则会收到错误“使用未声明的类型 'XMLDocument'”

斯威夫特 3,Xcode 8.2

xml xcode swift

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

在更新后在 MySQL 触发器中构建 JSON

如果能够获得一些帮助来在 MySQL 5.6 中实现触发器来记录更新的信息,那就太好了。

\n\n

首先,这是我的数据表和日志表:

\n\n
CREATE TABLE t1\n(id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,\n data1 VARCHAR(255) NOT NULL,\n data2 DECIMAL(5,2) NOT NULL\n);\n\nCREATE TABLE t1_log\n(action VARCHAR(10) NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n id INTEGER NOT NULL,\n data1 VARCHAR(255) NOT NULL,\n data2 DECIMAL(5,2) NOT NULL,\n data1_old VARCHAR(255),\n data2_old DECIMAL(5,2)\n);\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的触发器:

\n\n
CREATE TRIGGER after_update_t1 AFTER UPDATE ON t1\n FOR EACH ROW\n BEGIN\n   INSERT INTO t1_log (action,timestamp,id,data1,data2,data1_old,data2_old)\n   VALUES (\'update\',NOW(),NEW.id,NEW.data1,NEW.data2,OLD.data1,OLD.data2);\n END;\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样做没有任何问题。但这个解决方案的缺点是我需要为每个数据表提供一个日志表。 \xc2\xa0 \n因此我考虑是否可能只有一个带有 BLOB 字段的日志表,将更新的字段组合到 JSON 字符串并存储它在这个 BLOB 中。但如何为此定义触发器呢? …

mysql json

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

标签 统计

mysql ×2

swift ×2

android ×1

applescript ×1

audio ×1

components ×1

delphi ×1

finder ×1

ios ×1

java ×1

json ×1

keylistener ×1

select ×1

sql ×1

text ×1

xcode ×1

xml ×1