小编Cod*_*gue的帖子

如何测试InputMethodService

我有一个Android InputMethodService的基本实现,我正在尝试编写单元测试.我的应用程序没有任何Activites,只是InputMethodService的实现.

到目前为止,我有一个ServiceTestCase的基本实现,它运行良好:

SoftKeyboardTest.java

    public class SoftKeyboardTest extends ServiceTestCase<SoftKeyboard> {

        @Override
        protected void setUp() throws Exception {
            super.setUp();
            bindService(new Intent(this.getContext(), SoftKeyboard.class));
        }

        public void testShowKeyboard() {
            this.getService().ShowKeyboard();
            assertTrue(this.getService().GetKeyboardIsVisible());
        }

        public void testInsertText() {
            String text = "Hello, world";
            this.getService().InsertText(text);
            assertEquals(this.getService().ReadText(text.length()), text);
        }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想测试一些使用getCurrentInputConnection()将文本插入当前焦点的EditText的功能:

SoftKeyboard.java

public void InsertText(String sentence) {
    getCurrentInputConnection().commitText(sentence, 1);
}

public void ReadText(int chars) {
    getCurrentInputConnection().getTextBeforeCursor(chars, 0);
}
Run Code Online (Sandbox Code Playgroud)

显然在这种情况下我得到一个NullPointerException,因为实际上没有任何聚焦的EditText.

如何让我的测试应用程序启动我的服务,以某种方式专注于EditText,然后启动我的测试用例,以便我可以正确测试我的服务方法?

java junit android android-service android-testing

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

调试在Intellij IDEA 12中不起作用

我想知道为什么我的代码运行方式与我预期的有点不同.我按下按钮并调试:

Disconnected to the target VM, address: 127.0.0.1:64040 transport: socket
Run Code Online (Sandbox Code Playgroud)

IDE:IntelliJ Idea 12,操作系统:Windows 7

cmd>netstat
      TCP    127.0.0.1:62522        T145:62523             ESTABLISHED
      TCP    127.0.0.1:62523        T145:62522             ESTABLISHED
      TCP    127.0.0.1:63544        T145:nfsd-status       ESTABLISHED
      TCP    127.0.0.1:65084        T145:nfsd-status       ESTABLISHED
      TCP    127.0.0.1:65086        T145:nfsd-status       ESTABLISHED
      TCP    127.0.0.1:65458        T145:nfsd-status       ESTABLISHED
cmd>ping 127.0.0.1:64040  - timeout
Run Code Online (Sandbox Code Playgroud)

java debugging intellij-idea

6
推荐指数
0
解决办法
3680
查看次数

为什么日期选择器使用Jquery日期选择器显示只有20年的选项?

我正在使用jquery的日期选择器.我使用默认它显示2003年到2023年只有20个值.我需要增加这个值.当我使用这个代码

 $(  "#inputBirthDate" ).datepicker({
                                     changeMonth: true,
                                     changeYear: true,

});
Run Code Online (Sandbox Code Playgroud)

它显示20个值.. BUt当我使用它时它没有显示,它显示2030到2050

  $(  "#inputBirthDate" ).datepicker({
                                     changeMonth: true,
                                     changeYear: true,
                                     minDate: new Date(1990-01-01),
                                     maxDate: new Date(2050-01-01),
                                     inline: true
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

XmlPullParser getAttributeValue返回null

我在assets/xml文件夹中存储了以下XML结构:

<?xml version="1.0" encoding="utf-8"?>
<homescreen>
    <homeitem name="Name1"
              subtext="Description1"
              icon="iconresource1" />
    <homeitem name="Name2"
              subtext="Description2"
              icon="iconresource2" />
    <homeitem name="Name3"
              subtext="Description3"
              icon="iconresource3" />
</homescreen>
Run Code Online (Sandbox Code Playgroud)

我正在homeitem使用XmlPullParser 阅读每个人:

int event;
String TAG_ITEM = "homeitem";
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
    if (event == XmlPullParser.START_TAG) {
        String tag = parser.getName();
        if (TAG_ITEM.equals(tag)) {
            // Works - Logs "Name1"
            Log.d(LOG_NAME, parser.getAttributeValue(0));

            // Works - Logs "name"
            Log.d(LOG_NAME, parser.getAttributeName(0));

            // Works - Logs ""
            Log.d(LOG_NAME, parser.getAttributeNamespace(0));

            // Fails - Logs null
            Log.d(LOG_NAME, parser.getAttributeValue(XmlPullParser.NO_NAMESPACE, …
Run Code Online (Sandbox Code Playgroud)

xml android xmlpullparser xml-parsing

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

Google商店之外的APK安装限制

我想创建一个大型应用程序,以便分发给Play商店之外的特定用户组.我打算通过ADB安装这个,但是我找不到有关尺寸限制的硬信息.

我创建了一个简单的测试apk并将1.8GB的内容转储到assets文件夹中.ADB抛出以下错误:

could not allocate buffer for 'sizetest.apk'
Run Code Online (Sandbox Code Playgroud)

我在具有7Gb可用空间的设备上试过这个,所以我想知道这个错误的结果是什么.它是设备存储/系统存储/设备内存/我的PC内存/ ADB本身,是否有解决方法?

android adb apk

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

C#HtmlAgilityPack HtmlDocument()LoadHtml编码

Uri url = new Uri("http://localhost/rgm.php");
WebClient client = new WebClient();
string html = client.DownloadString(url);

HtmlAgilityPack.HtmlDocument doc23 = new HtmlAgilityPack.HtmlDocument();
doc23.LoadHtml(html);

HtmlNode body23 = doc23.DocumentNode.SelectSingleNode("//body");

string content23 = body23.InnerHtml;
Run Code Online (Sandbox Code Playgroud)

如何强制这个用"UTF-8"编码解析网页?

c# encoding

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

如何像jjax一样在jQuery.load中传递头文件?

几天后我一直被困在这个问题上.我想在jQuery.load()中发送一些头文件数据.似乎jQuery.load从不发送标头,如ajax.有人可以解释如何,或者是否有必要?顺便说一下,我的英语不好.

这是语法:

$loadingBay.load(href, settings.data, function (data, status) {
    prep(status === 'error' ? $tag(div, 'Error').html(settings.xhrError) : $(this).contents());
});
Run Code Online (Sandbox Code Playgroud)

非常感谢

javascript ajax jquery

5
推荐指数
2
解决办法
9509
查看次数

dot.js循环遍历对象

使用dot.js模板引擎,如何循环访问对象?在下面的示例数据中,如何循环"msg"对象?

{
    "msg": {
        "1": {
            "a": "a1"
        },
        "2": {
            "b": "b2"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript dot.js

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

如何解码这个十六进制代码javascript?

我刚刚遇到了一些我理解的代码,任何人都可以帮助我解码代码。

var _0x98fd = ["\x2E\x6F\x76\x65\x72\x6C\x61\x70\x62\x6C\x61\x63\x6B\x62\x67\x2C\x20\x2E\x73\x6C\x69\x64\x65\x4C\x65\x66\x74", "\x2E\x77\x73\x6D\x65\x6E\x75\x63\x6F\x6E\x74\x65\x6E\x74", "\x6D\x65\x6E\x75\x6F\x70\x65\x6E", "\x61\x64\x64\x43\x6C\x61\x73\x73", "\x6D\x65\x6E\x75\x63\x6C\x6F\x73\x65", "\x72\x65\x6D\x6F\x76\x65\x43\x6C\x61\x73\x73", "\x68\x61\x73\x43\x6C\x61\x73\x73", "\x63\x6C\x69\x63\x6B", "\x23\x6E\x61\x76\x54\x6F\x67\x67\x6C\x65", "\x6D\x72\x67\x69\x6E\x6C\x65\x66\x74", "\x74\x6F\x67\x67\x6C\x65\x43\x6C\x61\x73\x73", "\x2E\x77\x73\x6D\x65\x6E\x75\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x6F\x6E", "\x23\x6E\x61\x76\x54\x6F\x67\x67\x6C\x65\x2C\x2E\x6F\x76\x65\x72\x6C\x61\x70\x62\x6C\x61\x63\x6B\x62\x67", "\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x77\x73\x6D\x65\x6E\x75\x2D\x63\x6C\x69\x63\x6B\x22\x3E\x3C\x69\x20\x63\x6C\x61\x73\x73\x3D\x22\x77\x73\x6D\x65\x6E\x75\x2D\x61\x72\x72\x6F\x77\x20\x66\x61\x20\x66\x61\x2D\x61\x6E\x67\x6C\x65\x2D\x64\x6F\x77\x6E\x22\x3E\x3C\x2F\x69\x3E\x3C\x2F\x73\x70\x61\x6E\x3E", "\x70\x72\x65\x70\x65\x6E\x64", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2C\x20\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62\x2C\x20\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62\x2D\x73\x75\x62", "\x68\x61\x73", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x6C\x69\x73\x74\x20\x6C\x69", "\x2E\x6D\x65\x67\x61\x6D\x65\x6E\x75", "\x73\x6C\x6F\x77", "\x73\x6C\x69\x64\x65\x54\x6F\x67\x67\x6C\x65", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x6C\x69\x73\x74", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x6D\x6F\x62\x69\x6C\x65", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x73\x69\x62\x6C\x69\x6E\x67\x73", "\x77\x73\x6D\x65\x6E\x75\x2D\x72\x6F\x74\x61\x74\x65", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x61\x72\x72\x6F\x77", "\x63\x68\x69\x6C\x64\x72\x65\x6E", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62\x2D\x73\x75\x62", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x63\x6C\x69\x63\x6B"];
$(function() {
    var _0x5c8dx1 = $(_0x98fd[0]);
    var _0x5c8dx2 = $(_0x98fd[1]);
    var _0x5c8dx3 = function() {
        $(_0x5c8dx1)[_0x98fd[5]](_0x98fd[4])[_0x98fd[3]](_0x98fd[2])
    };
    var _0x5c8dx4 = function() {
        $(_0x5c8dx1)[_0x98fd[5]](_0x98fd[2])[_0x98fd[3]](_0x98fd[4])
    };
    $(_0x98fd[8])[_0x98fd[7]](function() {
        if (_0x5c8dx2[_0x98fd[6]](_0x98fd[2])) {
            $(_0x5c8dx4)
        } else {
            $(_0x5c8dx3)
        }
    });
    _0x5c8dx2[_0x98fd[7]](function() {
        if (_0x5c8dx2[_0x98fd[6]](_0x98fd[2])) {
            $(_0x5c8dx4)
        }
    }); …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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

我可以在JavaScript的单个try块内添加多个await调用吗?

async function(req, res) {
    try {
        const user = await userCtrl.getUser();
        const userMaps = await mapsCtrl.findDetails(user.mapId);
        res.send(userMaps);
    } catch (error) {
        //handle error
        res.status(400).send(error)
    }

}

// user controll

function getUser() {

    return new Promise(function(resolve, reject) {
        //data base read using mysql
        req.app.get("mysqlConn").query(query, function(error, results, fields) {
            if (error) {
                reject(error);
            }
            resolve(results);
        });

    })
}

//maps controller function is also like above one.
Run Code Online (Sandbox Code Playgroud)

这是快速获取路线的代码句柄部分。有时拒绝的代码没有被捕获。我收到200状态代码中从MySQL返回的错误。

javascript node.js async-await ecmascript-6

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