2012-04-28 10 views
0

EditTextが空のときにファイルへの書き込みに問題があります。ファイルに空白文字(-)を1つ書きたいだけですが、条件は単純に無視されます。EditTextの内容に基づいてファイルに書き込む

これが動作していないと、なぜ私は理解していない。その代わり、この

question.getText().toString().equals("") 

public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if(isthereafile == true){ 
      questioncount++; 
      questiontext = question.getText().toString(); 
      correctanswertext = correctanswer.getText().toString(); 
      wronganswertext1 = wronganswer1.getText().toString(); 
      wronganswertext2 = wronganswer2.getText().toString(); 
      textpathofpic = pathofpic.getText().toString(); 

      try { 
       FileWriter writer = new FileWriter(test,true); 

       if(question.getText().toString().equals("") == false){ 
       writer.append(questiontext + ";");} 
       if(correctanswer.getText().toString().equals("") == false){ 
       writer.append(correctanswertext + ";");} 
       if(wronganswer1.getText().toString().equals("") == false){ 
       writer.append(wronganswertext1 + ";");} 
       if(wronganswer2.getText().toString().equals("") == false){ 
       writer.append(wronganswertext2 + ";");} 
       if(pathofpic.getText().toString().equals("") == false){ 
       writer.append(textpathofpic + ";");} 

       if(question.getText().toString().equals("")){writer.append("-");} 
       if(correctanswer.getText().toString().equals("")){writer.append("-");} 
       if(wronganswer1.getText().toString().equals("")){writer.append("-");} 
       if(wronganswer2.getText().toString().equals("")){writer.append(" ");} 
       writer.flush(); 
       writer.close();  
       question.setText("");   
       correctanswer.setText("");  
       wronganswer1.setText("");   
       wronganswer2.setText(""); 

      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      } 

     } 
    }); 
+0

最初の明白な考えは、isthereafileが間違っているということです。デバッガでステップインしたり、値を記録しようとしましたか? – RivieraKid

+0

あなたの助けてくれてありがとうございますが、onClick methond isthereafileが真実になったのは、これはユーザーがバックボタンを押してダイアログボックスの[OK]をクリックするとクラッシュなどが起きたときです。 – CELB

+0

コードも表示します... – 5hssba

答えて

0

は、あなたがテキストをトリミングする必要があり、この

question.getText().toString().length()==0 
+0

これはあなたが説明することができます – CELB

0

のようにしてみてください長さを確認することに加えて:

if (question.getText().toString().trim().length() == 0) { 
} 

もっと大きな問題は、コードがメインスレッドのファイルシステムに書き込むことです。また、finallyブロック内のFileWriterを閉じることもありません。 close()の直前にflush()を呼び出す必要はありません。

+0

を知っておくと便利です – CELB