2012-03-28 8 views
1

誰かが私のアプリがsamsumg galaxy nexusで正常に動作する理由を教えてもらえますが、samsung galaxy sではクラッシュしますか? 私はそれがこのラインにクラッシュしていることが分かった:新しいキャンバス(ビットマップ)は銀河でクラッシュしますが、ネクサスでも動作します

bMapRpm=BitmapFactory.decodeResource(getResources(), R.drawable.canvasback); 
canvasRpm = new Canvas(bMapRpm); 

BitmapFactory.decodeResourceが正常に動作しますが、私は新しいキャンバスを作成するときにクラッシュします。

私のギャラクシーSは、(私はなぜ知らない)logcat

をサポートしていないので、私はlogcatを投稿することができない誰かが私を助けることができますか?

+0

Galaxy Sはlogcatをサポートしており、コマンドラインで 'adb logcat'を試してみてください。 –

答えて

2

おそらく、ビットマップは可変である必要があります。 Doc: "描画する指定されたビットマップを持つキャンバスを構築します。ビットマップは変更可能でなければなりません。"

あなたのことができます。

bMapRpm=BitmapFactory.decodeResource(getResources(), R.drawable.canvasback); 

Bitmap mutableCopy = Bitmap.createBitmap(bMapRpm.getWidth(),bMapRpm.getHeight(),bMapRpm.getConfig()); 
canvasRpm = new Canvas(mutableCopy); 
canvasRpm.drawBitmap(bMapRpm, null, null); 
bMapRpm.recycle(); 

..do、 使用Bitmap.copy(コンフィ、is_mutable)可変ビットマップを作成するために

+0

ええと私はそれを変更可能にするにはどうすればいいですか?なぜそれがネクサスで動作しますか? – 5w4rley

+0

thxが問題でした。しかし、私はまだそれがネクサス上でどのように動作するのか理解できませんが、glaxyではありません。 – 5w4rley

+0

異なる実装方法。ドキュメンテーションは、decodeResourceによって与えられたビットマップが変更可能でなければならないかどうかを示していません。 –

0

簡単な方法キャンバスに好きな、 は、あなたはそれを試すことができます。

bMapRpm=BitmapFactory.decodeResource(getResources(), R.drawable.canvasback); 
Bitmap mutableCopy = bMapRpm.copy(Bitmap.Config.ARGB_8888, true); 
canvasRpm = new Canvas(mutableCopy); 
関連する問題