2

カメラアプリを構築しようとしています。

これは MainActivity のコードです。

public class MainActivity extends Activity {

    public static int CAMERA_REQUEST_KEY = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA_REQUEST_KEY);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CAMERA_REQUEST_KEY) {
            if (resultCode == RESULT_OK) {
                Bundle bundle = data.getExtras();
                Bitmap bmp = (Bitmap) bundle.get("data");
                ImageView iv = (ImageView) findViewById(R.id.image_frame);
                iv.setImageBitmap(bmp);
            } else {
                Toast.makeText(getApplicationContext(), "Operation Failed", Toast.LENGTH_LONG).show();
            }
        }
    }
}

画像をキャプチャした後
、「残念ながら、カメラのチュートリアルは停止しました」というメッセージが表示されます。 ログ猫は言う

11-13 21:23:00.107: E/AndroidRuntime(17967): java.lang.RuntimeException: Unable to resume activity {com.example.cameratutorial/com.example.cameratutorial.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { act=inline-data dat=content://media/external/images/media/20787 typ=image/jpeg (has extras) }} to activity {com.example.cameratutorial/com.example.cameratutorial.MainActivity}: java.lang.NullPointerException

何が問題ですか?

4

1 に答える 1

1

持っていない

  setContentView(R.layout.mylayout);

そう

  ImageView iv = (ImageView) findViewById(R.id.image_frame);// fails

findViewById現在のインフレートされたレイアウトで言及されている id を持つビューを探します。したがって、最初にレイアウトのコンテンツをアクティビティに設定してから、ビューを初期化する必要があります。

ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);
    iv = (ImageView) findViewById(R.id.image_frame);
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, CAMERA_REQUEST_KEY);
}

マニフェスト ファイルに必要な権限があることを確認してください

http://developer.android.com/reference/android/hardware/Camera.html

http://developer.android.com/guide/topics/media/camera.html

于 2013-11-13T16:06:11.090 に答える