2015-03-06 4 views
0

Я написал этот код для поиска текстового файла для строки. Проблема заключается в том, что строка не найдена, даже если она присутствует. Процесс состоит в том, чтобы получить текст из EditText, а затем начать процесс поиска. Но это показывает, что строка найдена каждый раз.получение текста из EditText в android

package com.example.demo; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

import android.content.Context; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button button; 
    final EditText obedittext; 

    button =(Button)findViewById(R.id.button1); 
    obedittext =(EditText)findViewById(R.id.editText1); 


    button.setOnClickListener(
      new View.OnClickListener() 
      { 
       boolean textfound; 
       public void onClick(View view) 
       { 
        textfound = searchtext(obedittext.getText().toString()); 
        if(textfound) 
         maketoast(obedittext.getText().toString()); 
        else 
         maketoast("Unsuccessfull"); 
       } 
    }); 

} 

protected boolean searchtext(String string) { 
    // TODO Auto-generated method stub 

    BufferedReader br = null; 
    try { 

     String sCurrentLine; 

     br = new BufferedReader(new InputStreamReader(getAssets().open("mneumo.txt"))); 

     while ((sCurrentLine = br.readLine()) != null) { 
      if(sCurrentLine.equals(string)) { 
       return true; 
      } 
     } 
     br.close(); 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
     finally{ 

     } 
    return false; 
} 


private void maketoast(String string) { 
    // TODO Auto-generated method stub 

    Context context = getApplicationContext(); 

    Toast toast = Toast.makeText(context, string , Toast.LENGTH_SHORT); 
    toast.show(); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 

Так что, когда я попытался дать строку внутри самого кода вместо того, чтобы получать его от edittext, он отлично работает. Подобно этому, string = "SPINAL ANESTHESIA AGENTS";

Текстовый файл образца,

SPINAL ANESTHESIA AGENTS 
XYLOCAINE: WHERE NOT TO USE WITH EPINEPHRINE 
GENERAL ANAESTHESIA: EQUIPMENT CHECK PRIOR TO INDUCING 

Так как я могу исправить эту проблему? Может кто-нибудь сказать, почему я получаю эту проблему? Должен ли я использовать любой другой метод для сравнения строк?

Текстовый файл правильно помещен в папку активов. И я обратился к нему с помощью агента по управлению активами. И я полный новичок в разработке Android.

+0

Изменить if (sCurrentLine.equals (string)) {to if (string.contains (sCurrentLine)) { – JacksOnF1re

ответ

0

Может быть вашим EditText содержат некоторое пустое пространство уже, чтобы получить текст из EditText попробовать это:

obedittext.getText().toString().trim(); 

и внутри метода SearchText(), замените ваш, если условие с:

if(sCurrentLine.equalsIgnoreCase(string)) 
Смежные вопросы