getFilesDir () in een subklasse van Weergave

Kan ik de methode getFilesDir() gebruiken in een .class die gebruikmaakt van extend View ?

public void save(){
    try {
        File myDir = new File(getFilesDir().getAbsolutePath());
        FileWriter fw = new FileWriter(myDir + "/Test.txt");
        fw.write(Integer.toString(score));
        fw.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

alleen de methode getFilesDir() krijgt een foutmelding met één snelle oplossing beschikbaar - maak methode getFilesDir() . En dit komt omdat het zich in een klasse met uitstallingen View bevindt. Ik kan dit oplossen door de methode in een Activity-klasse te plaatsen en de methode in de klasse View te gebruiken met behulp van static. Dit werkt niet, het programma crasht en de score wordt niet opgeslagen.

0

2 antwoord

Geef de context gewoon door aan uw constructeur View en u kunt de locatie van de sdcard opvragen.

[Bewerk] Wat ik bedoel is dat deze klasse van jou die View uitbreidt waarschijnlijk nergens bestaat waar het toegang heeft tot de context, dus je moet dat object doorgeven in de constructor VAN wanneer je het in je activiteit plaatst (waar je wel hebt een verwijzing ernaar).

dus zoiets als dit ...

class Foo extends View{
   public foo (Context c){
      c.getFilesDir();//or any method that belongs to context
   }
}

dan in je activiteit

class Main extends Activity{
   @override
   public void onCreate(){
       super.onCreate();


       Foo foo = new Foo(this); //this is a reference to the activity AND is also the context;
   }
}
4
toegevoegd
Wat hij zegt is dat nadat iemand je vraag heeft beantwoord en het antwoord voor jou werkt, klik je op de groene vink naast het antwoord. En ga naar je profiel en doe hetzelfde voor al je vragen.
toegevoegd de auteur ShadowGod, de bron
Wat bedoelt u?
toegevoegd de auteur Daniel, de bron
oke, sorry dat ik een noob ben :(
toegevoegd de auteur Daniel, de bron
En het antwoord is geen hulp, zelfs als ik myDir = new File gebruik (context.getFilesDir (). GetAbsolutePath ()); in de constructur werkt het niet
toegevoegd de auteur Daniel, de bron

gebruik de methode getContext

 getContext().getFilesDir();
3
toegevoegd
Dat werkt niet meer
toegevoegd de auteur Daniel, de bron
btw moet je gewoon het bestand file = new File (getContext() gebruiken. getFilesDir (), "Test.txt"); versie van de bestandsklasse en gebruik gewoon nieuwe FileWriter (bestand); zorg er ook voor dat je je filewriter doorspoelt ().
toegevoegd de auteur caguilar187, de bron