2012-05-10 17 views
0

RelativeLayoutのスクリーンショットを撮っていますが、エラーが発生します。スクリーンショットを撮るには?

エラー:

05-10 17:43:44.249: ERROR/AndroidRuntime(7721): Caused by: java.lang.NullPointerException 
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):  at android.graphics.Bitmap.createBitmap(Bitmap.java:358) 
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):  at com.API.Connect.share(FacebookConnect.java:110) 

コード:

public class Connect extends Activity implements LoginListener { 

    public static String news = " "; 

    RelativeLayout bitmapimage; 

    Bitmap bitmap; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.image); 
     bitmapimage = (RelativeLayout) findViewById(R.id.bitmapimg); 
     TextView txtlove = (TextView) findViewById(R.id.txtlove); 
     txtlove.setText(news.toString()); 
     share(); 

    } 

    public void share() { 

     View v1 = bitmapimage; 
     v1.setDrawingCacheEnabled(true); 

     bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 

     v1.setDrawingCacheEnabled(false); 

     saveImage(); 

     // TODO Auto-generated method stub 

    } 

    void saveImage() { 
     String state = Environment.getExternalStorageState(); 
     Environment.MEDIA_MOUNTED.equals(state); 

     File myDir = new File("/mnt/sdcard/DCIM/Camera"); 
     myDir.mkdirs(); 

     String fname = "mytry.jpg"; 
     File file = new File(myDir, fname); 
     if (file.exists()) 
      file.delete(); 
     try { 
      FileOutputStream out = new FileOutputStream(file); 
      // create a Bitmap object from our image path. 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
      out.flush(); 
      out.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Nidhiこの[リンク] [1]をフォローしてください。あなたのために働くことを望みます。 [1]:http://stackoverflow.com/questions/7762643/android-take-screen-shot-programatically – vikky

答えて

5

は正しいです。しかしonCreate()では、あなたのビューは描画されませんでした。それはちょうど膨らんだ。したがって、以下の方法を検討する必要があります。これを試してみてください。

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    super.onWindowFocusChanged(hasFocus); 
    share(); //Call your share() here. 
} 

ビューが描画されると、このメソッドは呼び出されます、したがって、あなたは、このメソッドをオーバーライドすることで、ビットマップを取得することができます。

1

私は私はあなたのエラーを発見したと思います。 getdrawingcacheは既にビットマップを返します。したがって、nullpointer例外が発生する可能性がある という新しい識別子を作成する必要はありません。

ますので、これが動作するかどうか私に教えて

bitmap = v1.getDrawingCache();

代わりの

bitmap = Bitmap.createBitmap(v1.getDrawingCache());

を試してみてください。

挨拶、何をしようとする Wottah

+0

お返事ありがとうございます – nshah

関連する問題