有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Google Glass浸入式OnClick在单独的线程中不工作

我的问题很简单。我正在根据在单独线程中执行的HTTP查询的结果创建一张卡。该卡还具有onclick方法,并在位于单独线程内的runOnUiThread()中定义。但是,当设备被点击时,onclick事件不会被触发

这是我的密码:

private void login() {
    Runnable r = new Runnable() {
        @Override
        public void run() {

        // irrelevant code

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                setContentView(buildError(code));
            }
        }
    }

    Thread t = new Thread(r);
    t.start();
}

private View buildError(String code) {
    CardBuilder card = new CardBuilder(this, CardBuilder.Layout.ALERT);

    card.setIcon(R.drawable.ic_warning_150);
    if (code.equals("1"))
        card.setText("Incorrect credientals");
    else
        card.setText("Unexpected error");

    card.setFootnote("Tap to try again");

    View cView = card.getView();
    cView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.i("Event", "Clicked"); // This is what isn't triggering
        }
    });
    cView.setFocusable(true);
    cView.setFocusableInTouchMode(true);

    return cView;
}

共 (1) 个答案

  1. # 1 楼答案

    即使代码片段包含错误(无法编译,Runnable语句中缺少;),但您的思路是正确的

    视图只需请求焦点即可立即单击。否则,您必须手动移动焦点

    cView.setFocusable(true);
    cView.setFocusableInTouchMode(true);
    cView.requestFocus();
    

    Reference