2010-10-25 9 views
13

d'abord, j'ai codé quelques méthodes dans l'activité principale, mais j'ai décidé qu'ils devraient être une classe.La méthode OpenFileOutput() est indéfinie!

c'est mon code ... openFileOutput et openFileInput ne sont pas définis. Une idée?? peut-être que ça devrait être un service ou une activité ... ??

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

double possible de [androïde ce qui ne va pas avec openFileOutput?] (Http: // stackoverflow .com/questions/3625837/android-quoi-est-faux-avec-openfileoutput) –

+0

@MichaelGaskill oui, c'est possible . Mais ces questions ont 6 ans .. :) Je pense, j'ai ouvert la question après avoir beaucoup étudié. Mais je ne me souviens pas, juste en pensant .. :) – atasoyh

Répondre

30

Ce sont des méthodes définies dans la classe Context, pas des méthodes définies dans votre classe. Lorsque votre code faisait partie d'un Activity, il pourrait utiliser une méthode de commodité openFileInput() dans sa classe de base Activity pour accéder au sous-jacent Context.getApplicationContext().openFileInput() (et de même pour openFileOutput()).

Maintenant, vous devrez remplacer ceux avec les appels directs aux méthodes sous-jacentes Context.

11

Remplacer

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

avec la ligne ci-dessous

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

Si utilisé à l'intérieur Fragment

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

Je fais 'getContext(). OpenFileOutput (nom de fichier, Context.MODE_PRIVATE)' à l'intérieur d'un fragment, et cela fonctionne encore .... Ma question est quelle est la différence entre 'getContext()' et 'getActivity()'. – eRaisedToX