2012-01-21 13 views
0

内部ストレージにいくつかのデータをアンドロイドで保存しようとしていますが、NullPointerExceptionが発生しています。使用しているgetFilesDir()と関係があります。 Canon Someは、そのようなケースであるかどうかを明らかにして、このファイルをデバイスに書き込む手助けをしてください。ここでエラーメッセージイムは、メインクラスのOnCreateのはgetFilesDir()メソッドでNullPointerExceptionエラーが発生しました

01-20 22:11:59.020: E/AndroidRuntime(329): FATAL EXCEPTION: main 
01-20 22:11:59.020: E/AndroidRuntime(329): java.lang.NullPointerException 

01-20 22:11:59.020: E/AndroidRuntime(329): at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:178) 

01-20 22:11:59.020: E/AndroidRuntime(329): at yantz.imageapp4.main.writeElement(main.java:89) 

01-20 22:11:59.020: E/AndroidRuntime(329): at yantz.imageapp4.Panel.onTouchEvent(Panel.java:102) 
ここ

をされて取得しています

ここ
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FrameLayout sv = new FrameLayout(this); 
    LinearLayout ll = new LinearLayout(this); 
    test = new Panel(this); 
    test.settest(1) ; 
    ll.setOrientation(LinearLayout.VERTICAL); 
    sv.addView(test); 
    sv.addView(ll); 
    setContentView(sv);} 

パネルクラス

public boolean onTouchEvent(MotionEvent event) { 
    mainactivity=new main();  
    mainactivity.writeElement(new Element(getResources(),(int) event.getX(),(int) event.getY())); 
     Log.v("Gesture", "is 1 "); 
     return super.onTouchEvent(event); 
} 

の私のOnTouch方法 ここでは

があなたのAndroidManifest.xmlを開き、後に以下の行を書き、試してみてください私のメインクラス内の私のwriteObjectメソッド

public void writeElement(Element obj){ 
    Log.v("main", "made it to method writeElement"); 
    File f = new File(getFilesDir()+FILENAME); 
    try { 
fos = new FileOutputStream(f); 
    ObjectOutputStream objectwrite = new ObjectOutputStream(fos); 
    objectwrite.writeObject(obj); 
fos.close(); 
Log.v("main", "file was made File "); 

}catch (FileNotFoundException e){ 
    e.printStackTrace(); 
    Log.v("main", "file was not made File not found "); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    Log.v("main", "file was not made File IOException "); 
} 
} 

マニフェスト

<uses-sdk android:minSdkVersion="10" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:label="@string/app_name" 
     android:name="yantz.imageapp4.main" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

     <activity android:name=".charactors" android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black"> 
     <intent-filter> 
    <action android:name="yantz.imageapp4.charactors" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
<activity android:name=".main2" android:label="@string/app_name" 
     android:theme="@android:style/Theme.Black"> 
     <intent-filter> 
<action android:name="yantz.imageapp4.main2" /> 
<category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 
+0

どのラインがラインmain.java:89ですか? – ghostbust555

+1

あなたはFILEにAndroidMenifest.xmlの書き込み権限を与えましたか? – Lucifer

+0

@ ghostbust555行89は "ファイルf =新しいファイル(getFilesDir()+ FILENAME);"コード内の行 –

答えて

1

私は何が間違っているのか分かります。あなただけの書き込みができない

mainactivity=new main(); 

getFilesDirが正しいコンテキスト・インスタンスを取得する必要がありますが、それは今いません。 そのようなものを試してみてください:

public boolean onTouchEvent(MotionEvent event) { 
    main.writeElement(new Element(...), this.getContext); 
    return super.onTouchEvent(event); 
} 

public static void writeElement(Element obj, Context context){ 
    ... 
    File f = new File(context.getFilesDir(), FILENAME); 
    ... 
} 
+0

NullPointerExceptionを修正したようです –

0

ですタグの終了

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> 
+0

AndroidManifest.xmlにアクセス許可を追加しますが、前と同じエラーが発生しました –

+0

AndroidManiFest.xmlファイルのコードをアップロードしてください。 – Lucifer

+0

READ_EXTERNAL_STORAGE - "WRITE_EXTERNAL_STORAGE権限を宣言するアプリケーションには、この権限が暗黙的に付与されています。" – Graeme

関連する問題