2014-07-02 86 views
0

我在openFileOutput(FILENAME,Context.MODE_PRIVATE)中收到此錯誤;嘗試寫入文件時出現錯誤

我之前使用過這個代碼,我不知道爲什麼它現在不工作。錯誤讀取:方法openFileOutput(字符串,整數)是未定義的類型SaveProjects

package com.example.musicvideomaker; 

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectOutputStream; 
import java.io.OutputStreamWriter; 
import java.util.ArrayList; 

import android.content.Context; 
import android.util.Log; 

import com.example.musicvideomaker.Projects; 

public class SaveProjects { 

FileOutputStream fos; 

public ArrayList<Projects> Projects; 


public void saveProject(Projects project, String FILENAME) 
{ 
    this.Projects.add(project); 
    try 
    { 
    fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    ObjectOutputStream os = new ObjectOutputStream(fos); 
    os.writeObject(this); 
    os.close(); 
    } 
    catch (FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
} 

} 
+0

你可以從logcat粘貼錯誤嗎? – empr777

+0

您已將方法'saveProject'從活動移至此新類,'openFileOutput'是'Context'的方法。你需要傳遞一個'Context'作爲參數,並在其上調用'openFileOutput'。 – njzk2

+0

出現語法錯誤。紅色下劃線是在openFileOutput – user3798867

回答

0

既然你在活動中卻沒有,你需要使用的語境叫「openFileOutput」。儘管您的Context可能需要在應用程序文件中靜態聲明,或者如果您從Activity調用SaveProject類,則可以將上下文作爲類的參數傳遞(雖然這是不好的做法)。那麼你可以試試這個:

public class SaveProjects { 

private Context context; 

FileOutputStream fos; 


public ArrayList<Projects> Projects; 

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

public void saveProject(Projects project, String FILENAME) 
{ 
    this.Projects.add(project); 
    try 
    { 
    fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    ObjectOutputStream os = new ObjectOutputStream(fos); 
    os.writeObject(this); 
    os.close(); 
    } 
    catch (FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
} 

} 
+0

這是怎麼回事?一個可怕的方式來做到這一點,但它可以工作... – aProperFox

+0

評論刪除後的重要版本的答案。 – njzk2

+0

謝謝。當我給出第一行代碼時,我會領先於自己,假設OP會理解有關上下文的所有其他內容。 – aProperFox