当我单击按钮 (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
然后,您只需调用:
,而不是发送 IntentEditText 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/