2011-05-03 6 views
3

ma classe d'activité appelle à une autre classe de non-activité et quand j'essaie d'utiliser openFileOutput, mon EDI me dit que openFileOutput est indéfini. S'il vous plaît aider:en utilisant openFileOutput() dans une classe. (pas une activité)

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.io.*; 

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

public class testFile(){ 

Context fileContext; 

public testFile(Context fileContext){ 
    this.fileContext = fileContext; 
} 

public void writeFile(){ 
    try{ 
      FileOutputStream os = fileContext.getApplicationContext().openFileOutput(fileLoc, Context.MODE_PRIVATE); 
     os.write(inventoryHeap.getBytes()); // writes the bytes 
     os.close(); 
     System.out.println("Created file\n"); 
    }catch(IOException e){ 
     System.out.print("Write Exception\n"); 
    } 
} 
} 

Répondre

0

J'ai supprimé ma réponse d'avant, depuis que je me suis trompé, le problème que je vois est que vous ajoutez à () la déclaration de classe: public class testFile(){. il devrait être public class testFile{. C'est tout.

+0

merci pour l'aide. votre réponse précédente était correcte. J'ai juste tapé mon exemple faux, c'est pourquoi j'ai eu la classe publique testFile() { – ddan

+0

C'est marrant tu le dis, puisque d'utiliser ton exemple exact, mais seulement avec le correctif que j'ai écrit dans cette réponse, je n'ai pas d'erreurs ... – MByD

+0

ok ... je viens de faire ça. J'ai eu la classe de non-activité étendre ma classe d'activité. et j'ai retiré le getContextApplication() dans ma classe de non-activité. J'ai également changé le type de fichierContexte en Activité. – ddan

2

Vous avez déjà un contexte.

FileOutputStream os = fileContext.openFileOutput(fileLoc, Context.MODE_PRIVATE); 
0

Vous pouvez essayer de changer Context fileContext;-static Context fileContext;

0

J'écris cela plus pour moi que pour quelqu'un d'autre. Je suis nouveau à la programmation Android. J'ai eu le même problème et j'ai corrigé en passant le contexte en paramètre à la méthode. Dans mon cas, la classe essayait d'écrire dans un fichier en utilisant un morceau de code que j'ai trouvé dans un exemple Java. Depuis que je voulais écrire la persistance d'un objet et ne pas voulu me préoccuper du « où » le fichier a été, je l'ai modifié à ce qui suit:

public static void Test(Context fileContext) { 
    Employee e = new Employee(); 
    e.setName("Joe"); 
    e.setAddress("Main Street, Joeville"); 
    e.setTitle("Title.PROJECT_MANAGER"); 
    String filename = "employee.ser"; 
    FileOutputStream fileOut = fileContext.openFileOutput(filename, Activity.MODE_PRIVATE); // instead of:=> new FileOutputStream(filename); 
    ObjectOutputStream out = new ObjectOutputStream(fileOut); 
    out.writeObject(e); 
    out.close(); 
    fileOut.close(); 
} 

et de l'activité d'appel que j'utilise les éléments suivants :

SerializableEmployee.Test(this.getApplicationContext()); 

Travaillé comme un charme. Ensuite, je pourrais le lire avec (une version simplifiée):

public static String Test(Context fileContext) { 
    Employee e = new Employee(); 
    String filename = "employee.ser"; 
    File f = new File(filename); 
    if (f.isFile()) { 
    FileInputStream fileIn = fileContext.openFileInput(filename);// instead of:=> new FileInputStream(filename); 
    ObjectInputStream in = new ObjectInputStream(fileIn); 
    e = (Employee) in.readObject(); 
    in.close(); 
    fileIn.close(); 
    } 
    return e.toString(); 
} 
Questions connexes