Android 基于EditText的内容写入文件

Android 基于EditText的内容写入文件,android,file-io,Android,File Io,我在写入文件时遇到问题,当EditText为空时,我想在文件中写入一个空格字符或-但我的条件被忽略 这不起作用,我不明白为什么: public void onClick(View v) { // TODO Auto-generated method stub if(isthereafile == true){ questioncount++; questiontext = question.getTe

我在写入文件时遇到问题,当EditText为空时,我想在文件中写入一个空格字符或-但我的条件被忽略

这不起作用,我不明白为什么:

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();
            }
            }

        }
    });
而不是这个

  question.getText().toString().equals("")   
像这样试试

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

除了检查长度外,还需要修剪文本:

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

一个更大的问题是代码在主线程上写入文件系统。您也不会在finally块中关闭FileWriter。关闭前无需立即调用flush。

第一个明显的想法是isthereafile为false-您是否尝试过单步执行调试器,或记录值?感谢您的帮助,但在onClick方法中,isthereafile变为true时,用户按下后退按钮并在对话框上单击OK,针对崩溃等…为了未来访问者的利益,通常更可取的做法是添加一个自己的答案,解释如何修复代码,然后接受该答案,而不是删除代码并评论您已修复代码。我已经回滚了您的编辑以给您这样做的机会。单击对话框上的“确定”、“防止崩溃”等按钮和按钮是什么意思。。。什么是反对崩溃等?好吧,对不起,我必须等8个小时才能回答@raju,我会解释我的答案