2017-03-02 10 views
0

私のコードは.txtファイルを読み込んで、 "yoloswag"がないかどうかを調べます。文字列を表示しない場合はダイアログに文字列を表示します。if! StringBuilderで動作しません。android

private void display() { 
    File sdcard = Environment.getExternalStorageDirectory(); 
    File file = new File(sdcard, "broadcast.txt"); 
    StringBuilder text = new StringBuilder(); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line; 
     while ((line = br.readLine()) != null) { 
      text.append(line); 
      text.append('\n'); 
     } 
     br.close(); 
    } catch (IOException e) { 
    } 
    if (!text.equals("yoloswag")) { 
     AlertDialog alertDialog = new AlertDialog.Builder(this) 
       .setTitle("BROADCAST").setMessage(text).create(); 
     alertDialog.getWindow().setType(
       WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
     alertDialog.show(); 
    } else { 
     // don't show 
    } 
} 

しかし、問題は、.txtファイルに "yoloswag"が含まれているかどうかにかかわらず常にダイアログが表示されることです。どこが間違っていますか?あなたはまた、StringBuilderの

if (!text.toString().equals("yoloswag")) 

上のtoString()メソッドを呼び出す必要があるため

答えて

0

それは常にfalseになります、あなたが読んでいる各行のために、あなたはそう、最後に「\ n」を追加していますファイルに "yoloswag"が含まれていても、生成するStringBuilderは "yoloswag \ n"です。なぜなら、それらが決して等しくない理由です。

+0

を行く、それはまだダイアログを示し:( – joey

+0

それが働いた。あなたは最高です! – joey

+0

それは役立ちましたうれしい。それはあなたの問題 – Ricardo

0

ありますが、私はあなたのコードを試してみました

String result = text.toString(); 
    if (!result.contains("yoloswag")) { 
     AlertDialog alertDialog = new AlertDialog.Builder(this) 
     .setTitle("BROADCAST") 
     .setMessage(text).create();alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
     alertDialog.show(); 
    } else { 
     // don't show 
    } 
関連する問題