bonjour,

Lorsque je clique sur mon bouton pour accéder à mon menu, arrivé à un certain moment dans l'application j'ai une erreur OutOfMemoryError: bitmap size exceeds VM budget. Pourriez-vous m'aider ? Merci.

Voici le logcat : (j'ai mis le slignes en évidence dans mon code)

744000-byte external allocation too large for this process.
VM won't let us allocate 744000 bytes
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
at android.graphics.Bitmap.createBitmap(Bitmap.java:423)
at android.graphics.Bitmap.createBitmap(Bitmap.java:374)
at com.slidemenu.SlideoutHelper.prepare(SlideoutHelper.java:38)
at com.slidemenu.SlideoutActivity.prepare(SlideoutActivity.java:10)
at com.xxxxxxx.MainTabActivity$2.onClick(MainTabActivity.java:57)
Voici ma portion de code où se Trouve l'erreur dans MainTabActivity

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
btn_show.setOnClickListener(new View.OnClickListener() {
						public void onClick(View v) {
				
							int width = (int) TypedValue.applyDimension(
									TypedValue.COMPLEX_UNIT_DIP, 40, getResources()
											.getDisplayMetrics()) + 50;
							SlideoutActivity.prepare(MainTabActivity.this,R.id.inner_content, width);

				
Intent myintent = new Intent(MainTabActivity.this,MenuActivity.class);

myintent.putExtra("requestcode", REQUEST_CODE_MAIN);

myintent.putExtra("current_item", current_item);

startActivityForResult(myintent, REQUEST_CODE_MAIN);

overridePendingTransition(0, 0);
}
	});
SlideOutActivity c'est sur cette ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public static void prepare(Activity activity, int id, int width){
		SlideoutHelper.prepare(activity, id, width);
	}

et dans SlideOutHelper

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

	public static void prepare(Activity activity, int id, int width) {
		if (sCoverBitmap != null) {
			sCoverBitmap.recycle();
		}
		Rect rectgle = new Rect();
		Window window = activity.getWindow();
		window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
		int statusBarHeight = rectgle.top;

		ViewGroup v1 = (ViewGroup) activity.findViewById(id).getRootView();
		v1.setDrawingCacheEnabled(true);
		Bitmap source = Bitmap.createBitmap(v1.getDrawingCache());
		v1.setDrawingCacheEnabled(false);
		if (statusBarHeight != 0) {
			sCoverBitmap = Bitmap.createBitmap(source, 0, statusBarHeight, source.getWidth(), source.getHeight() - statusBarHeight);
			source.recycle();
		} else {
			sCoverBitmap = source;
		}
		sWidth = width;
	}