Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

bitmapを他アクティビティに移動できない

解決したいこと

AndroidStudioでKotlinを用いてスマホアプリを作っています。
ある画像を生成し、その画像を別アクティビティ上で表示させたいのですができません。
解決方法、助言を教えてください。

発生している問題・エラー

現状最初のアクティビティ(Activity1)でViewの状態で出力することはできています。
調べた限り私が行うべき手順は以下の2通りあると考えています。

[1]
Activity1のViewをBitmapに保存

BitmapをintentでActivity2に移す

Activity2上でImageViewにセットする

[2]
Activity1のViewをBitmapに保存しアプリの内部ストレージに保存

Activity2上で内部ストレージに保存したBitmapを参照しImageViewにセットする

どちらの方法に対してもうまく行きませんでした。

該当するソースコード

以下はActivity1.ktです。

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val r1 = intent.getStringExtra("ratio1")
        val r2 = intent.getStringExtra("ratio2")
        val r3 = intent.getStringExtra("ratio3")
        val r4 = intent.getStringExtra("ratio4")
        val r5 = intent.getStringExtra("ratio5")
        val r6 = intent.getStringExtra("ratio6")
        val r7 = intent.getStringExtra("ratio7")
        val r8 = intent.getStringExtra("ratio8")
        val r9 = intent.getStringExtra("ratio9")
        val r10 = intent.getStringExtra("ratio10")

        val myView : View = MyView(this, r1!!, r2, r3, r4, r5, r6, r7, r8, r9, r10)
//        setContentView(myView)

        val capture : Bitmap? = getViewCapture(myView)

        val intent = Intent(this, RouletteScreen::class.java)
        intent.putExtra("capture",capture)
        startActivity(intent)

//val capture ~ strtActivityまでの行をコメントアウトしsetContentView(myView)のコメントアウトを外すと
//画面遷移せずに表示させたい画像が表示されます。
    }

    private fun getViewCapture(view: View): Bitmap? {
        view.isDrawingCacheEnabled = true

        // Viewのキャプチャを取得
        val cache = view.drawingCache ?: return null
        val screenShot = Bitmap.createBitmap(cache)
        view.isDrawingCacheEnabled = false
        return screenShot
    }

以下はActivity2.ktです。

    @SuppressLint("ResourceType")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity2

        val intent1 = intent
        val bmp = intent1.getParcelableExtra<Bitmap>("capture")

        val image2 = findViewById<ImageView>(R.id.imageView2)
//activity2.xmlではサンプルとして別の画像が表示されており、その画像を置き換える処理を行いたいです。

        image2.setImageBitmap(bmp)

        val animation: Animation = AnimationUtils.loadAnimation(this, R.anim.animation1)
        image2.startAnimation(animation)

//以下省略

このまま実行させるとエラー文は出ませんが、Activity2上で画像が出力されず真っ白になってしまいます。

自分で試したこと

以下の記事などを参考にしました。

0

No Answers yet.

Your answer might help someone💌