java - Eclipse 中的 Android - 在后台调用 File Writer 类

标签 java android eclipse text-files

当我单击按钮 (btnPrintTardy) 时,我需要生成一个 .txt 文件,其中包含我在 txtbox (editText1) 中输入的内容。

这是我的文件编写器 java 类。

import android.app.Activity;

import java.io.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;

public class FileWriter extends Activity {
    EditText txtData;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    txtData = (EditText) findViewById(R.id.editText1);
    }


    public void onClick(View v) {
        // write in data folder
        try {
            File myFile = new File("/data/LatePass/StudentLatePass.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = 
                                    new OutputStreamWriter(fOut);
            myOutWriter.append(txtData.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(),
                    "Finished writing StudentLatePass.txt'",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }

                finish();
                };
}

我从我的“StudentActivity”中调用这个方法,但是,这就是我陷入困境的地方。我想保留当前的屏幕 Activity ,但在后台运行文件编写器。那么我该怎么称呼这个呢?

我已经尝试过

 public void UpdateStudenttxtfile(View View)
    {

    Intent intent = new Intent(View.getContext(), FileWriter.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    }

运气不好:(

最佳答案

我建议使用 AsyncTask 来完成此后台工作,而不是作为单独的 Activity 来实现: http://developer.android.com/reference/android/os/AsyncTask.html

然后,您只需调用:

,而不是发送 Intent
EditText txtData = (EditText) findViewById(R.id.editText1);
FileWriterTask task = new FileWriterTask();
task.execute(txtData.getText().toString());

public class FileWriterTask extends AsyncTask<String, Void, Void> {
  @Override
  protected Void doInBackground(String... params) {
    // Do your filewriting here. The text should now be in params[0]
  }
}

这是关于 AsyncTask 的另一个答案: Where do I extend the AsyncTask?

关于java - Eclipse 中的 Android - 在后台调用 File Writer 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9529210/

相关文章:

android - 无法在 Eclipse 中导入 git android 项目

java - 与锡耶纳玩耍的多重关系

java - android或java中 '$'中的 "int $value"是什么意思?

java - 如何转换打印到控制台的递归方法,使其返回字符串?

android - 使用asmack访问连接到Ejabberd的MySQL

java - 在 Android 应用程序中使用 XML 更改进度条颜色

java - 摆脱操作栏

java - 在 Java 中连接到 MySQL 数据库时访问被拒绝

android - 我应该关注 Eclipse 控制台区域中的 DDMS 消息吗?

java - Eclipse 建议空指针异常,但我相信我初始化了我的对象