Android 使用异步任务(newboston教程示例)将数据保存到内部内存错误它有进度条

Android 使用异步任务(newboston教程示例)将数据保存到内部内存错误它有进度条,android,android-asynctask,save,progress-bar,fileinputstream,Android,Android Asynctask,Save,Progress Bar,Fileinputstream,这是我在这里的第一篇文章 我是新来的,所以请善待我 我正在学习travis的教程,其中涉及到保存数据和使用异步任务 我真的很专注,但我无法找出我的代码有什么问题,所以我在这里发布了!: 我加上了logcat! 它在没有异步和进度条的情况下工作(保存和加载) 最新变化!: 我修复了进度条,但loadwithasync类不起作用,我是说这行: 我认为这必须返回Srting ld并在文本视图res中设置它。但它看起来不是这样的!为什么来自mybringback的travis!没有像Strig s=ne

这是我在这里的第一篇文章

我是新来的,所以请善待我

我正在学习travis的教程,其中涉及到保存数据和使用异步任务

我真的很专注,但我无法找出我的代码有什么问题,所以我在这里发布了!: 我加上了logcat! 它在没有异步和进度条的情况下工作(保存和加载)

最新变化!: 我修复了进度条,但loadwithasync类不起作用,我是说这行: 我认为这必须返回Srting ld并在文本视图res中设置它。但它看起来不是这样的!为什么来自mybringback的travis!没有像Strig s=new loadWith….那样写这行吗?你能告诉我哪里出了问题吗!我很困惑,我不知道如何正确调试!! 新建loadWithAsyncTask().execute(文件名)

公共类SaveAndLoadInternal extends活动实现OnClickListener{
编辑文本文件、数据;
文本视图资源;
文件输入流fis;
文件输出流;
字符串文件名;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.save\u load\u internal);
按钮加载,保存;
file=(EditText)findViewById(R.id.etslFile);
数据=(EditText)findViewById(R.id.etSlideData);
res=(TextView)findViewById(R.id.tvSLIres);
加载=(按钮)findViewById(R.id.bSLIload);
保存=(按钮)findViewById(R.id.bSLIsave);
//设置文件并关闭它!
load.setOnClickListener(这个);
save.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
FILE_NAME=FILE.getText().toString();
开关(v.getId()){
案例R.id.bSLIload:
//评论只是为了做一些调整!快跑
//在另一个线程中加载进程以使UI线程休息:D以避免挂起!
FileInputStream fis=null;
String ld=“加载失败!”;
/*试一试{
fis=openFileInput(文件名);
字节[]b=新字节[fis.available()];
而(一读(b)!=-1){
ld=新字符串(b);
}
}捕获(FileNotFoundException e1){
e1.printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
fis.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
res.setText(ld);
*/
new loadWithAsyncTask().execute(文件名);
//执行将运行doInBackground方法!
打破
案例R.id.bSLIsave:
字符串sd=data.getText().toString();
/*
//下面是保存文件的一种方法!必须工作,但不能!
文件f=新文件(文件名);
试一试{
fos=新文件输出流(文件名);
fos.write(sd.getBytes());
fos.close();
res.setText(“保存完成!”);
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
*/
试一试{
fos=openFileOutput(文件名、上下文、模式、私有);
fos.write(sd.getBytes());
fos.close();
res.setText(“保存完成!”);
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
打破
违约:
打破
}
}
// /*
//第一个参数:传入的内容(文件名)
//进度条的第二个参数(此处使用整数)
//第三个是我们将返回的内容!(保存的文本!字符串ld)
公共类loadWithAsyncTask扩展了AsyncTask{
进展性帕金森病;
String Ld=“加载失败!”;
FileInputStream fis=null;
//这是我第一次打电话
@凌驾
受保护的void onPreExecute(){
//示例:设置变量或其他东西!
pd=新建进度对话框(SaveAndLoadInternal.this);
pd.setProgressStyle(ProgressDialog.STYLE_水平);
pd.setMax(100);
pd.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//用于进度对话框
对于(int i=0;i<20;i++){
出版进度(5);
试一试{
睡眠(88);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
pd.解散();
试一试{
fis=openFileInput(文件名);
字节[]b=新字节[fis.available()];
res.setText(String.valueOf(fis.available());
而(一读(b)!=-1){
Ld=新字符串(b);
}
}捕获(FileNotFoundException e1){
e1.printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}最后{
试一试{
fis.close();
//把绳子还给我!
返回Ld;
}捕获(IOE异常){
e、 printStackTrace();
}
}
返回null;
}
//示例中加载的进度!
@凌驾
受保护的void onProgressUpdate(整数…进度){
pd.incrementProgressBy(进度[0]);
}
}// */
}

当您查看错误时,您将看到
onProgressUpdate()
抛出一个NPE。看看代码,有两种可能:1<代码>pd为空或2<代码>进度为空。在那里添加一个断点或一些日志记录,以查看到底发生了什么

protected void onProgressUpdate(Integer...progress){
    pd.incrementProgressBy(progress[0]);
}

错误是什么?你能把你的航海日志寄出去吗?另外,发布您的
AndroidManifest.xml
的内容。欢迎访问SO。本网站的主要重点是帮助回答特定的编程问题。不幸的是,你忘了问你的。我加了日志!它在没有异步的情况下工作我没有发布清单,因为id说它在没有异步任务的情况下工作。如果我不需要,舱单一定没问题
protected void onProgressUpdate(Integer...progress){
    pd.incrementProgressBy(progress[0]);
}