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



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

这是我的File Writer 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"中调用这个方法,然而,这是我有点卡住的地方。我想保持当前的屏幕活动,但在后台运行文件编写器。那么我该怎么称呼它呢?

我试过

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

运气不佳:(

我建议将AsyncTask用于此后台工作,而不是作为单独的活动来实现:http://developer.android.com/reference/android/os/AsyncTask.html

然后,您不发送意向,只需调用:

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的另一个答案:我在哪里扩展AsyncTask?

最新更新