我这保存和恢复字符串咋不成功

谁学逆向工程 2017-10-28 12:43:35
重启程序以后 load 函数中的 line 变量是"",怎么回事?
package com.example.servicetest;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MainActivity extends AppCompatActivity {
EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit=(EditText)findViewById(R.id.edit);

String inputText = load();
if(!TextUtils.isEmpty(inputText))
{
edit.setText(inputText);
edit.setSelection(inputText.length());
Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show();
}
}

String load()
{
FileInputStream in =null;
BufferedReader reader=null;
StringBuilder content=new StringBuilder();
try{
in=openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line="";
while((line=reader.readLine())!=null){
content.append(line);
}
}catch (IOException e)
{
e.printStackTrace();
}
return content.toString();
}
@Override
protected void onDestroy() {
super.onDestroy();
String intputText = edit.getText().toString();
save(intputText);
}

void save(String intputText)
{
FileOutputStream out=null;
BufferedWriter writer=null;

try{
out=openFileOutput("data", Context.MODE_PRIVATE);
writer=new BufferedWriter(new OutputStreamWriter(out));
writer.write(intputText);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
...全文
200 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
谁学逆向工程 2017-11-01
  • 打赏
  • 举报
回复
引用 3 楼 xiaohuh421 的回复:
排查这类错误 , 只能是先检查是否保存成功, 再来跟踪读取的问题.
引用 4 楼 qq_18488037 的回复:
对,排查这类错误 , 只能是先检查是否保存成功, 再来跟踪读取的问题
没root 的手机,android无法查看文件吧?
moonFY 2017-10-30
  • 打赏
  • 举报
回复
要在页面销毁之前做, 在onDestroy 中 super 只会 基本保存不到数据,super之前 随缘。 在onPause 中 做保存操作 在onResume 中做取出操作。
qq_18488037 2017-10-30
  • 打赏
  • 举报
回复
对,排查这类错误 , 只能是先检查是否保存成功, 再来跟踪读取的问题
xiaohuh421 2017-10-30
  • 打赏
  • 举报
回复
排查这类错误 , 只能是先检查是否保存成功, 再来跟踪读取的问题.
qingtian1397 2017-10-28
  • 打赏
  • 举报
回复
read不到是不是文件中就没有内容。 写不进去是不是因为页面消亡了,super.onDestroy()走了控件的内容获取不到了。 流用了要关。write的时候,用flush吧,好像是。

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧