2011-12-28 19 views
0

ビットマップイメージをPNG形式のsdcardに保存しようとすると、コードでは常に以下に説明するエラーが返されます。私には同じ解決策を提案してください。ビットマップをアンドロイドでsdcardに保存する際にエラーが発生しました

エラー・スタック:

12-28 12:50:58.765: ERROR/AndroidRuntime(16977): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.greetingApp.common/com.greetingApp.common.Greeting}: java.lang.NullPointerException 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.os.Looper.loop(Looper.java:123) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at dalvik.system.NativeStart.main(Native Method) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977): Caused by: java.lang.NullPointerException 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at com.greetingApp.common.Greeting.SaveData(Greeting.java:138) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at com.greetingApp.common.Greeting.onCreate(Greeting.java:78) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
12-28 12:50:58.765: ERROR/AndroidRuntime(16977):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 

コード:

protected void SaveData() 
     { 


      FrameLayout view = (FrameLayout)findViewById(R.id.frameLayout2); 
      view.setDrawingCacheEnabled(true); 
      view.buildDrawingCache(); 
      bm = view.getDrawingCache(); 

      OutputStream outStream = null; 
      File file = new File(extStorageDirectory, "er.PNG"); 
      try { 
      outStream = new FileOutputStream(file); 
      bm.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
      outStream.flush(); 
      outStream.close(); 

      //Toast.makeText(AndroidWebImage.this, "Saved", Toast.LENGTH_LONG).show(); 

      } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      //Toast.makeText(AndroidWebImage.this, e.toString(), Toast.LENGTH_LONG).show(); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      // Toast.makeText(AndroidWebImage.this, e.toString(), Toast.LENGTH_LONG).show(); 

      // TODO Auto-generated method stub 

     } 

事前

+0

FrameLayoutのこのビューのインスタンスを使用することができますが、すべての問題にPareshを持っていますかあなたは同じことをする必要があります。 –

+1

どの行が138であり、onCreate()にも続きます。 –

答えて

1

のおかげであなたがここに

FrameLayout view = (FrameLayout)findViewById(R.id.frameLayout2); 
をヌルを持っていないことを確認してください

ます場合はまたのonCreate内のIDを取得し、SaveData()

FrameLayout view; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_xml); 
     view = (FrameLayout)findViewById(R.id.frameLayout2); 
} 

でそれを利用するのより良いが、今、あなたはあなたのSaveData()

+0

私は同じことをしましたが、エラーは同じです。 –

+0

どのラインでエラーが表示されますか? –

+0

目的のビューのビットマップを取得できません。 –

関連する問題