2011-07-21 7 views
13

GetFilesDir()はnullを返します。これは全く奇妙です。悪いことに、私のコードは...痛いほどシンプルです:getFilesDir()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)); 
} 

これはf.getAbsolutePath()でクラッシュします。現在、1024x600で2.3.3システムをエミュレートするエミュレータで動作しています。

Googleはこれを何も返しません...なぜ地球上で起こっているのですか?そして私はそれをどのように修正するのですか?

ありがとうございます!

EDIT :: SOLVED!

まあ、多少...

は、私はそれがエミュレータ誤りであることが判明したと思います。エミュレータのスキンをWXVGAに変更し、ファイルを正しく書き込めるようにしました。そして、解像度を1024x600に戻したとき、正しく動作し続けました。

誰かが似たようなエラーを抱えている場合は、バグを見つけ出すまで、エミュレータで遊んでみることをお勧めします。 f.getAbsolutePath前にこれを追加すること

+0

これは奇妙です!物理デバイスとエミュレータの両方で、Context.getFilesDir()を呼び出すときに "/data/data/com.example.myapp/files"のような文字列を受け取ります。私は独立しているはずの事実にもかかわらず私のSDカードを削除しようとしました。同じ結果。それは実際に困惑しています。 – Shlublu

+1

@ Shlublu同じ文字列を得るのは、システムにSDカードの概念がなく、内部/外部ストレージだけであるということです。 – rf43

+0

私はこのバグに遭遇しました。バカバカしい。エミュレータのスキンを前後に変更することで、それも私のために修正されました。このようなクラップスは私がエミュレータを使って嫌いな理由です。 –

答えて

0

てみてください():

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

これはエミュレータのエラーであることが判明しました。私はエミュレータのスキンと密度とコードで、周りを変えずに周り遊んで、突然人生に飛び火した。エミュレータがまだバグだったときにあなたのコードを実行した場合、フォルダー/ null /を作成しようとしましたが、とにかく動作しませんでした... – Squimmy

+0

getFilesDir()自体がnullを返すので、どうなるでしょう仕事! – NarendraJi