首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileoutputStream / bufferreader

FileoutputStream / bufferreader
EN

Stack Overflow用户
提问于 2013-07-01 03:36:39
回答 2查看 232关注 0票数 0

我有一个等式,它的结果显示在一个TextView中。然后我有另一个TextView,它的行为就像一个历史。此历史记录我想保存一个文件,该文件应重新加载后,应用程序将被杀死并重新启动。

我不明白的是,第二个TextView,也就是我要保存的视图,在启动应用程序后会显示一些奇怪的东西

这句话一遍又一遍地说。

代码语言:javascript
复制
android.widget.TextView{41852c0 VFED.VCL ..... ID32,316-419,351 #7f09000a app:id/tvHistory}

我自己的代码:

代码语言:javascript
复制
final static String FILENAME = "marks.txt";
mNotenHistory=(TextView)findViewById(R.id.tVhistory);
mNotenHistory.setMovementMethod(new ScrollingMovementMethod());

private void loadTextfromFile()
    {
        File f = new File(getFilesDir(),FILENAME);
        try {
            BufferedReader br = new BufferedReader(new FileReader(f));
            String line;
            try {
                while ((line = br.readLine()) != null)
                {
                    mNotenHistory.setText(line+"\n"+mNotenHistory.getText());
                }
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

@Override
    public void onClick(View view)
    {
       [...]

           mNotenHistory.setText(mNotenHistory.getText() + "\n" + string_note);
           String noten_history_string = String.valueOf(mNotenHistory);
           try {
               FileOutputStream fo = openFileOutput(FILENAME, Context.MODE_APPEND);
               fo.write(noten_history_string.getBytes());
               fo.write("\n".getBytes());

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


       }
EN

回答 2

Stack Overflow用户

发布于 2013-07-01 06:05:32

下面是令人不快的一行:

String noten_history_string = String.valueOf(mNotenHistory);

看看Android文档中的这个定义:

代码语言:javascript
复制
public static String valueOf(Object value)

在API级别1中添加了

将指定的对象转换为其字符串表示形式。如果对象为null,则返回字符串"null",否则使用toString()获取字符串表示。

TextView类从View类继承toString()。下面是它的定义:

在API级别1中添加了

public String toString ()

返回一个字符串,其中包含对此对象的简明、人类可读的说明。鼓励子类覆盖此方法,并提供考虑对象类型和数据的实现。默认实现相当于以下表达式:getClass().getName() + '@' + Integer.toHexString(hashCode())

所以这就是你的问题。String.valueOf(mNotenHistory) 不会在文本视图中显示文本。因此,您正在向文件中写入其他内容(特别是您提到的那一行)。要从TextView获取文本,请改用getText()方法。这条线应该是这样的:

代码语言:javascript
复制
String noten_history_string = mNotenHistory.getText();
票数 0
EN

Stack Overflow用户

发布于 2013-07-01 23:51:33

快速恢复我想要完成的内容。

TextView A得到一个方程的结果,在每次新的计算后,这个结果都是清晰的。为了保存结果,这里有TextView B。在TextView B中,结果应该从下往上写,这样最新的结果就在上。同时,它应该将TextView的内容写入到文件中。

关闭/终止应用程序并重新打开后,TextView B将显示所有保存的数据。

重置按钮应清除文件的所有内容,使其为空。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17394129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档