getFilesDir () в подклассе для просмотра - PullRequest
0 голосов
/ 13 ноября 2011

Могу ли я использовать метод getFilesDir() в .class, который использует extends 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();
    }
}

только метод getFilesDir() получает сообщение об ошибке с одним доступным исправлением - метод создания getFilesDir(). И это потому, что он находится в классе с расширением View, я могу исправить это, поместив метод в класс Activity и использовать метод в классе View с помощью static. Это не работает эфир, сбой программы и счет не сохраняется.

Ответы [ 2 ]

4 голосов
/ 13 ноября 2011

Просто передайте Context в конструктор View, и вы сможете получить местоположение sdcard.

[Изменить] Я имею в виду, что этот ваш класс, который расширяет View, вероятно, не существует нигде, где он имеет доступ к контексту изначально, поэтому вам нужно передать ему этот объект в конструкторе FROM, когда вы создаете его экземпляр в своей деятельности (где у вас есть ссылка на него).

так как то так ...

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

тогда в вашей деятельности

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;
   }
}
3 голосов
/ 13 ноября 2011

используйте метод getContext

 getContext().getFilesDir();
...