我正在学习如何使用手势生成器来识别手势并在开发中使用它们。

这是我的代码的片段:

public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
    ArrayList<Prediction> predictions = oLib.recognize(gesture);
    // We want at least one prediction
    final EditText et_Text = (EditText) findViewById(R.id.editText1);
    if (predictions.size() > 0) {
        Prediction prediction = predictions.get(0);
        if (prediction.score > 0.1) { // do the work
            //Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT)
                    //.show();
            String s ="o";
            if (prediction.name == s) {



                et_Text.setText("o");
                Toast.makeText(this, "TEST", Toast.LENGTH_SHORT)
                .show();
            }

        }

    }
}


我有一个称为o的手势,想法是当我做出该手势时,它将在EditText中键入o,但我不知道为什么它只是这样做了?

如果(得分> 0.1),它会在第一秒内识别手势,但一次打击就不会识别。

知道为什么吗?

最佳答案

不要将Strings==进行比较;那很可能是你的问题。要比较Strings,请使用.equals()方法。又名:if (s.equals(prediction.name))

简而言之,==比较引用,而.equals()实际上比较Strings的内容。我将进行更详细的介绍,但是许多线程for example对此进行了介绍。

10-07 17:22