0

最小限の Android ビットマップ ローダーが必要です。このコードは、NullPointerException("Unable to start activity ComponentInfo") をスローします。

package com.example.testbitmap;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String photoPath = "/storage/sdcard0/Pictures/image.jpeg";
        Bitmap bitmap = BitmapFactory.decodeFile(photoPath);
        ImageView iv = (ImageView) findViewById(R.id.imageView1); 
        iv.setImageBitmap(bitmap);
        setContentView(iv);
    }

}
4

2 に答える 2

1
ImageView iv = (ImageView) findViewById(R.id.imageView1); 
iv.setImageBitmap(bitmap);
setContentView(iv);

setContentView();別のレイアウト(レイアウトにあるはずiv)またはivそれを見つける代わりに作成する必要があります

また、呼び出しのsetContentView前に置くfindViewById

于 2013-09-30T10:36:26.147 に答える
1

レイアウトのビューにアクセスできるようになった後、常にアクティビティで最初にレイアウトを設定する必要があります。

最初にビューにアクセスしてから、間違ったレイアウトを設定した後です。以下のように onCreate() を変更します。

    setContentView(R.layout.mylayout); //provide your layout file name where your ImageView resides.
    ImageView iv = (ImageView) findViewById(R.id.imageView1); 
    iv.setImageBitmap(bitmap);

また

動的に作成ImageViewし、それを次のように設定する場合Viewは、次のようにします。

  ImageView iv =new ImageView(); 
    setContentView(iv);
     iv.setImageBitmap(bitmap);
于 2013-09-30T10:39:14.323 に答える