我怎么能在我的Android代码中解决这个致命的异常?

时间:2015-03-15 22:04:05

标签: android

我用textSplitter编写了一个类,并在MainActivity.java中编写了一些代码 但是我遇到了致命的运行时异常。

public class textSplitter {

    public String myText(BufferedReader bufferedReader,StringBuilder stringBuilder,String line,String fin) throws IOException {

        while ((line=bufferedReader.readLine()) != null) {
            stringBuilder.append(line);
            stringBuilder.append('\n');
        }
        fin = stringBuilder.toString();
        return fin;
    }

    public String[] txtConverter(String[] text,String fin) {
        text = fin.split("\\$");
        return text;
    }
}

主要活动:

public class MainActivity extends Activity {

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

        InputStream is = this.getResources().openRawResource(R.raw.text1);
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        StringBuilder stringBuilder = new StringBuilder();
        String line = null;
        String fin = null;
        String[] text = null;
        textSplitter myClass = new textSplitter();
        try {
            myClass.myText(br,stringBuilder,line,fin);
            myClass.txtConverter(text,fin);

            TextView myText = (TextView) findViewById(R.id.text);
            myText.setText(text.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你的问题在这里

myClass.myText(br,stringBuilder,line,fin);

因为您从未将fin的值设置为结果。 尝试

fin = myClass.myText(br,stringBuilder,line,fin);

当你这样做时,这应该避免你的NPE

text = fin.split("\\$");