2010-10-25 19 views
13

en primer lugar, codifiqué algunos métodos en la actividad principal, pero decidí que deberían ser una clase.¡El método OpenFileOutput() no está definido!

este es mi código ... openFileOutput y openFileInput no están definidos. ¿¿Alguna idea?? tal vez debería ser servicio o actividad ... ??

package spexco.hus.system; 

    import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 
    import java.util.Date; 
    import spexco.hus.cepvizyon.CepVizyon; 
    import android.content.Context; 

    public class LicenseIDB { 
    private String PHONECODEFILE = "CepVizyonCode"; 
    private static String PhoneCode = null; 

    public LicenseIDB() { 
    if (readLocal(PHONECODEFILE, 8) == null) 
     createSystemCode(); 
} 

public static long getDate() { 
    Date currentTime = new Date(); 
    return currentTime.getTime(); 
} 

public void createSystemCode() { 
    long date = getDate(); 
    String str = Integer.toHexString(Integer.MAX_VALUE - (int) date); 
    for (int i = str.length(); i < 8; i++) { 
     str += "" + i; 
    } 
    PhoneCode = str.substring(0, 8); 
    saveLocal(PhoneCode, PHONECODEFILE); 

} 

public static String getPhoneCode() { 

    return PhoneCode; 
} 

public void saveLocal(String fileString, String Adress) { 

    try { 
     FileOutputStream fos = openFileOutput(Adress, Context.MODE_PRIVATE); 
     fos.write(fileString.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public String readLocal(String Adress, int lenght) { 
    byte[] buffer = new byte[lenght]; 
    String str = new String(); 
    try { 
     FileInputStream fis = openFileInput(Adress); 
     fis.read(buffer); 
     fis.close(); 
     str = new String(buffer); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return str; 
} 

}

+0

Posible duplicado de [androide lo que está mal con openFileOutput?] (Http: // stackoverflow .com/questions/3625837/android-what-is-wrong-with-openfileoutput) –

+0

@MichaelGaskill sí, es posible . Pero estas preguntas tienen 6 años ... :) Creo que abrí la pregunta después de investigar mucho. Pero no recuerdo, solo pensaba ... :) – atasoyh

Respuesta

30

Esos son los métodos definidos en la clase, no Context métodos definidos en la clase. Cuando su código era parte de un Activity, podría usar un método de conveniencia openFileInput() en su clase base Activity para acceder al Context.getApplicationContext().openFileInput() subyacente (y de manera similar para openFileOutput()).

Ahora tendrá que reemplazar aquellos con las llamadas directas a los métodos subyacentes Context.

11

Reemplazar

FileOutputStream fos = openFileOutput(Adress, Context.MODE_PRIVATE); 

con debajo de la línea

FileOutputStream fos = getApplicationContext().openFileOutput(filename, getActivity().MODE_PRIVATE); 

Si se utiliza dentro Fragmento

FileOutputStream fos =getActivity().openFileOutput(filename, getActivity().MODE_PRIVATE); 
+0

Estoy haciendo 'getContext(). OpenFileOutput (filename, Context.MODE_PRIVATE)' dentro de un fragmento, y todavía funciona ... Mi pregunta es ¿cuál es la diferencia? entre 'getContext()' y 'getActivity()'. – eRaisedToX