こんにちは私はsreen上のイメージの場所を内部ストレージに保存しようとしていますが、NotSerializableExceptionが発生します。私は検索して、問題がBitmapではないことを発見しましたこのリンクでシリアル化されるように設計されていますProblem serializing Drawable私は彼がどのように問題を解決したか理解できませんでした。誰かが、彼は彼の持つNotSerializableExceptionを修正する方法を説明し、私は私で得るのを助けることができれば、それは非常にjava.io.NotSerializableExceptionを修正する方法:android.graphics.Bitmap
をいただければ幸いです。ここここに私のElememtクラス
public class Element extends main implements Serializable{
private int mX;
private int mY;
int location2 ;
Matrix elementlocation;
private Bitmap mBitmap;
Canvas canvas2;
public Element(Resources res, int x, int y) {
location2 =item3;
mBitmap = BitmapFactory.decodeResource(res, location2);
mX = x - mBitmap.getWidth()/2;
mY = y - mBitmap.getHeight()/2;
}
public Element(){
}
public void doDraw2(Canvas canvas) {
elementlocation=new Matrix();
elementlocation.postTranslate(mX,mY);
canvas2=canvas;
canvas2.drawBitmap(mBitmap, elementlocation,null);
}
public void setelementlocation(float num1,float num2){
elementlocation=new Matrix();
elementlocation.postTranslate(num1,num2);
}
public Canvas getCanvas2(){
return(canvas2);
}
public String toString() {
String sentence;
sentence= mBitmap+" "+mX+" "+mY;
return (sentence);
}
}
は私のパネルで私onTouch方法でありますクラス
public boolean onTouchEvent(MotionEvent event) {
mainactivity=new main();
Log.v("test", "you have touched the sreen: ");
mElements.add(new Element(getResources(),(int) event.getX(),(int) event.get()));
mainactivity.writeElement(new Element(getResources(),(int) event.getX(),(int) event.getY()),this.getContext());
Log.v("Gesture", "is 1 ");
return super.onTouchEvent(event);
}
ここでは、私のメインクラスで私の書き込み要素法
public void writeElement(Element obj, Context context){
Log.v("main", "made it to method writeElement");
File f = new File(context.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 ");
}
}
で更新
public Element(Resources res, int x, int y) {
location2 =item3;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mBitmap = BitmapFactory.decodeResource(res, location2);
mX = x - mBitmap.getWidth()/2;
mY = y - mBitmap.getHeight()/2;
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
}
問題はBitmapだけでなく、CanvasとMatrixでも問題になります。これらのクラスのどちらも 'Serializable'ではありません。実際に何をしようとしていますか? –
@PeterKnego私はそれを持っている人が画面に触れることができ、画面上にsomesortの画像を置くことができたが、彼がそれをドラッグすることができ、より多くのスペースを得ることができるように彼が置くすべての画像をドラッグすることができる私が行列を持っている理由。彼が望むものを作った後、彼は彼がやったことを保存するために彼が好きなので、私は内部ストレージに保存するキャンバスが必要です。それはあなたのqustionに答える?短いゲームでレベルのエディタを作ろうとしています –