2011-07-21 14 views
13

Funkcja GetFilesDir() zwraca zero, co jest całkowicie dziwaczne. Co gorsza, mój kod jest ... boleśnie prosty:getFilesDir() zwracająca wartość null

public class main extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    File f = this.getFilesDir(); 
    f.getAbsolutePath(); 

    tempClicked((ToggleButton)findViewById(R.id.tempToggle)); 
} 

Spowoduje to awarię na f.getAbsolutePath(). Obecnie działa w emulatorze emulującym system 2.3.3 na 1024x600.

Google nie zwraca nic na ten temat ... więc dlaczego tak się dzieje? I jak to naprawić ?!

Wielkie dzięki!

EDYCJA :: ROZWIĄZANE!

Cóż, nieco ...

myślę, że to okazało się błędem emulator. Zmieniłem skórkę emulatora na WXVGA, co umożliwiło prawidłowe zapisanie plików. A kiedy następnie zmieniłem rozdzielczość z powrotem na 1024x600, to działało poprawnie.

Tak więc, jeśli ktoś ma podobny błąd, sugeruję grę z emulatorem, dopóki nie znajdziesz sposobu na pokonanie błędu.

+0

To dziwne! Zarówno na urządzeniach fizycznych, jak i emulatorach, podczas wywoływania funkcji Context.getFilesDir() otrzymuję ciąg znaków, taki jak "/data/data/com.example.myapp/files". Próbowałem nawet usunąć kartę SD, mimo że powinna być niezależna. Ten sam wynik. To naprawdę zagadkowe. – Shlublu

+1

@Shlublu Powodem, dla którego otrzymujesz ten sam ciąg, jest to, że system nie ma pojęcia o karcie SD, tylko pamięć wewnętrzna/zewnętrzna. – rf43

+0

Po prostu wpadłem na ten błąd. To jest niedorzeczne. Zmiana skórki emulatora tam iz powrotem naprawiła go również dla mnie. Takie bzdury, dlatego nienawidzę używać emulatorów. –

Odpowiedz

0

Spróbuj dodać ten przed f.getAbsolutePath():

File f = new File(this.getApplicationContext().getFilesDir() + "/"); 
f.mkdirs(); 
+1

Okazało się, że jest to błąd emulatora. Grałem ze skórą emulatora i gęstością, a kod, bez zmiany go, nagle skoczył do życia. Jeśli uruchomiłbym twój kod, podczas gdy emulator był nadal w błędzie, próbowałby utworzyć fałdę/null /, który i tak by nie zadziałał ... – Squimmy

+0

człowiek, getFilesDir(), który sam zwraca wartość zerową, więc jak to będzie pracuj !! – NarendraJi

Powiązane problemy