2012-03-02 43 views
1

當我單擊按鈕(btnPrintTardy)時,需要生成一個任何我已經輸入到txtbox(editText1)中的.txt文件。Android中的Eclipse - 在背景中調用文件編寫器類

這是我的文件編寫器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(); 
       }; 
} 

我從我的「學生活動」調用此方法,但是,這是我卡住的地方。我想繼續保持當前的屏幕活動狀態,但在後臺運行文件製作器。那麼我怎麼稱呼它呢?

我已經試過

public void UpdateStudenttxtfile(View View) 
    { 

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

沒有運氣:(

+0

Wot about使用線程寫入文件 – Triode 2012-03-02 06:56:11

回答

0

我會建議使用的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的另一個答案: Where do I extend the AsyncTask?

+0

請參閱我的其他答案的鏈接。 – 2012-03-02 07:37:42

+0

這是怎麼回事? 公共類FileWriterTask延伸的AsyncTask <空隙,空隙,空隙率> { \t公共類的FileWriter延伸活動{ \t \t // GUI控制 \t \t的EditText txtData; – UPGRAYEDD 2012-03-02 07:52:29

+0

我最近一次編輯對你有幫助嗎? – 2012-03-02 08:24:37