2016-04-05 14 views
0

Ich habe unter dem Code. Wenn der Bearbeitungstext den Fehler "String not found" auslöst, wird erzwungen. Was kann ich tun, um das zu verhindern? Zum Beispiel mit einer Toast-Benachrichtigung?Verhindern Kraft schließen, wenn Fehler passiert

public void OnClImgBtSearch(View v) 
{ 
    ImageButton ImgBtSearch=(ImageButton) findViewById(R.id.ImgBtSearch); 
    EditText EditTextGhavaninShow=(EditText) findViewById(R.id.EditTextGhavaninShow); 
    EditText EditTextGhavaninSearch=(EditText) findViewById(R.id.EditTextGhavaninSearch); 

    String StrEditText =EditTextGhavaninSearch.getText().toString(); 


    //(EditTextGhavaninShow.getText().toString().contains(StrEditText)) 

    String s = EditTextGhavaninShow.getText().toString(); 
    try{ 
    if(EditTextGhavaninShow.getText().toString().contains(StrEditText)); 
    { 
    int position = s.indexOf(StrEditText);    // where C is your character to be searched 
    int Lastlen=s.lastIndexOf(StrEditText); 
    int FirstLen=s.indexOf(StrEditText); 
    EditTextGhavaninShow.setSelection(FirstLen,Lastlen); 
    }} 
    catch (TypeNotPresentException e) { 
     Toast.makeText(getApplicationContext(), "عبارت مورد نظر یافت نشد", Toast.LENGTH_SHORT).show(); 

     e.printStackTrace(); 
    } 
+0

können Sie den vollständigen StackTrace anzeigen? – Pooya

+0

Gibt es eine Möglichkeit, alle ähnlichen Wörter, die in Editiertext angezeigt werden, auszuwählen oder hervorzuheben? –

+0

Ich denke, das ist eine andere Frage, und es ist besser, dass Sie eine neue Frage in SO – Pooya

Antwort

1

Wenn Sie Ihre App Absturz mit jeder Art von Fehler vermeiden möchten, sollten Sie Exception Klasse verwenden:

try{ 
    if(EditTextGhavaninShow.getText().toString().contains(StrEditText)){ 
     int position = s.indexOf(StrEditText); // where C is your character to be searched 
     int Lastlen=s.lastIndexOf(StrEditText); 
     int FirstLen=s.indexOf(StrEditText); 
     EditTextGhavaninShow.setSelection(FirstLen,Lastlen); 
    } 
}catch (Exception e) { 
    Toast.makeText(getApplicationContext(), "عبارت مورد نظر یافت نشد", Toast.LENGTH_SHORT).show(); 
    e.printStackTrace(); 
} 

Auch wenn es keine gute Lösung, sollten Sie Ihre Anwendung in einer Art und Weise verwalten, die stürze nicht in jedem einzelnen Szenario ab.

+0

danke dieser Kabeljau Arbeit Fin für mich. –

+0

Gibt es irgendeinen Grund, das Wort hervorzuheben oder auszuwählen, nach dem der Benutzer in editiertext sucht? –

+0

Sie könnten versuchen, mit android: selectAllOnFocus = "true" –