I'm working on a drawing app, and the code for my file saving routine goes
like this:

case SAVE_MENU_ID:
Config config = Config.ARGB_8888;
 Bitmap mBitmap = Bitmap.createBitmap(mDrawingPanel.getWidth(),
mDrawingPanel.getHeight(), config);
Canvas canvas = new Canvas(mBitmap);
 mDrawingPanel.draw(canvas);
Handler saveHandler = new Handler(){
@Override
 public void handleMessage(Message msg) {
final AlertDialog alertDialog = new AlertDialog.Builder(_panel).create();
 alertDialog.setTitle("Saved 1");
alertDialog.setMessage("Your drawing had been saved :)");
 alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
 return;
}
});
 alertDialog.show();
}
} ;

new ExportBitmapToFile(_panel, saveHandler, mBitmap).execute(null);
return true;
 }



The ExportBitmapToFile class is as follows:

private class ExportBitmapToFile extends AsyncTask<Intent,Void,Boolean> {
 private Context mContext;
private Handler mHandler;
private Bitmap nBitmap;

public ExportBitmapToFile(Context context,Handler handler,Bitmap bitmap) {
mContext = context;
 nBitmap = bitmap;
mHandler = handler;
}

@Override
protected Boolean doInBackground(Intent... arg0) {
 try {
if (!APP_FILE_PATH.exists()) {
APP_FILE_PATH.mkdirs();
 }

final FileOutputStream out = new FileOutputStream(new File(APP_FILE_PATH +
"/myAwesomeDrawing.png"));
 nBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
 out.close();
return true;
}catch (Exception e) {
 e.printStackTrace();
}
Toast.makeText(_panel, "Success!", 5);
 return false;
}


@Override
 protected void onPostExecute(Boolean bool) {
super.onPostExecute(bool);
 if ( bool ){
mHandler.sendEmptyMessage(1);
}
 }
}

The logcat is attached.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
08-12 11:42:20.880: ERROR/AndroidRuntime(12793): FATAL EXCEPTION: AsyncTask #1
08-12 11:42:20.880: ERROR/AndroidRuntime(12793): java.lang.RuntimeException: An 
error occured while executing doInBackground()
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
android.os.AsyncTask$3.done(AsyncTask.java:266)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.lang.Thread.run(Thread.java:1020)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793): Caused by: 
java.lang.RuntimeException: Can't create handler inside thread that has not 
called Looper.prepare()
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
android.os.Handler.<init>(Handler.java:121)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
android.widget.Toast$TN.<init>(Toast.java:310)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
android.widget.Toast.<init>(Toast.java:84)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
android.widget.Toast.makeText(Toast.java:226)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
com.appineering.android.drawingpad.DrawActivity$ExportBitmapToFile.doInBackground(DrawActivity.java:236)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
com.appineering.android.drawingpad.DrawActivity$ExportBitmapToFile.doInBackground(DrawActivity.java:1)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
android.os.AsyncTask$2.call(AsyncTask.java:252)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     at 
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-12 11:42:20.880: ERROR/AndroidRuntime(12793):     ... 4 more
08-12 11:42:20.900: WARN/ActivityManager(140):   Force finishing activity 
com.appineering.android.drawingpad/.DrawActivity

Reply via email to