MODE_PRIVATE ไม่สามารถแก้ไขเป็นตัวแปรใน openFileOutput

ฉันกำลังพยายามบันทึกไฟล์ html ฉันมีคลาสที่ขยาย AsyncTask

public class DownloadBook extends AsyncTask<String, Void, String> {

ภายในคลาสนี้ฉันมีวิธีนี้:

private void writeFile(String result, String title) throws FileNotFoundException {
        FileOutputStream fos = openFileOutput(title+".html", MODE_PRIVATE);
        PrintWriter pw = new PrintWriter(new BufferedWriter(
                new OutputStreamWriter(fos)));
        pw.print(result);
        pw.close();
    }

MODE_PRIVATE ให้ข้อผิดพลาดต่อไปนี้:

MODE_PRIVATE ไม่สามารถแปลงเป็นตัวแปรได้

จากนั้นฉันก็เปลี่ยนเป็น Context.MODE_PRIVATE ตอนนี้ openFileOutput ให้ข้อผิดพลาดนี้:

ไม่ได้กำหนดวิธีการ openFileOutput(String, int) สำหรับประเภท DownloadBook

จะแก้ไขปัญหานี้อย่างไร?


person user3388473    schedule 23.03.2014    source แหล่งที่มา


คำตอบ (1)


ใช้บริบทกิจกรรมหรือแอปพลิเคชันเพื่อเรียกเมธอด openFileOutput จากคลาส DownloadBook เป็น:

FileOutputStream fos = 
   getApplicationContext().openFileOutput( title+".html", Context.MODE_PRIVATE);

หาก DownloadBook เป็นคลาส Java แยกกัน ให้ใช้ตัวสร้างคลาสเพื่อรับบริบทของกิจกรรมสำหรับการเรียกใช้เมธอด openFileOutput เป็น:

public class DownloadBook extends AsyncTask<String, Void, String> {
private Context context;

  public DownloadBook(Context context){
   this.context=context;
  }

}

ตอนนี้ใช้ context สำหรับการเรียกเมธอด openFileOutput :

FileOutputStream fos = 
   context.openFileOutput( title+".html", Context.MODE_PRIVATE);

จากบริบทการส่งผ่านกิจกรรมไปจนถึงตัวสร้างคลาส DownloadBook :

DownloadBook obj_Downloadbook=new DownloadBook(getApplicationContext());
person ρяσѕρєя K    schedule 23.03.2014
comment
มันให้ข้อผิดพลาด: ไม่ได้กำหนดเมธอด getApplicationContext() สำหรับประเภท DownloadBook - person user3388473; 23.03.2014
comment
@ user3388473: เป็น DownloadBook แยกคลาส java หรือคลาสภายในของ Activity หรือไม่ - person ρяσѕρєя K; 23.03.2014