2017-04-14 5 views
0

Ceci est un morceau d'un script qui doit reconnaître un texte de la caméra via TextRecognizer puis rechercher un mot dans le texte. Si le mot est présent, le système doit enregistrer dans String found le mot après.Impossible de résoudre la méthode pour SparseArray <TextBlock>

Le problème est que j'ai ces deux erreurs:

Cannot resolve method 'contains(java.lang.String)' 
Cannot resolve method 'getValue(int)' 

Comment puis-je résoudre cette erreur? Je n'ai trouvé aucune méthode similaire pour SparseArray<TextBlock>.

public void receiveDetections(Detector.Detections<TextBlock> detections) { 

    String search = "palabra"; 
    final SparseArray<TextBlock> items = detections.getDetectedItems(); //is the detection of textRecognizer of the camera 

    for (int i=0; i<items.size(); ++i) 
    { 
    if(items.get(i).contains(search)) 
    { 
     String found = items.getValue(i+1); 
     Log.i("current lines ", found); 
    } 
    } 

} 

Répondre

0

Vous pouvez trouver le SparseArray documentation here.

Comme vous pouvez le voir, il n'y a pas de méthode getValue() sur SparseArray, afin d'appeler getValue(int) sur un SparseArray comme votre variable items n'est pas valide. De même, TextBlock n'a pas de méthode contains(String). L'appel items.get(i) renverra un TextBlock, donc tenter d'appeler contains(String) sur un TextBlock est également invalide.

Sur la base de ce que je vois dans votre code, je suppose que vous cherchez quelque chose de plus comme celui-ci, qui appelle la méthode de String:

for (int i=0; i<items.size(); ++i) {] 
    TextBlock text = items.get(i) 

    // Get the TextBlock's value as a String 
    String value = text.getValue() 

    // Check if this text block contains the search string 
    if(value.contains(search)) { 
     String found = items.getValue(i+1); 
     Log.i("Found search string " + search + " in block " + value); 
    } 
}