拍摄照片后,不会调用OnActivityResult

时间:2012-11-09 20:21:44

标签: android android-layout android-intent android-widget

我试图拍摄照片但是没有调用onActivityResult:

public class questionListView extends LinearLayout {

protected static final Integer PICTURE_RESULT = 1;
private Context ctx;

public Uri path;

public questionListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    ctx = context;
    init();
}

public questionListView(Context context) {
    super(context);
    ctx = context;
    init();
}

private void init() {

    LayoutInflater factory = LayoutInflater.from(getContext());
    View myView = factory.inflate(R.layout.view1, null);

    LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
    myView.setLayoutParams(params);

    addView(myView);

    Button btaddphoto = (Button) myView.findViewById(R.id.btAddPhoto);

    btaddphoto.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            String _path = Environment.getDataDirectory() + File.separator + "pic1.png";
            File file = new File(_path);
            Uri outputFileUri = Uri.fromFile(file);

            Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

            ((Activity) ctx).startActivityForResult(intent, PICTURE_RESULT);

        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Bitmap mBitmap;
    String _path = Environment.getDataDirectory() + File.separator + "pic1.png";
    mBitmap = BitmapFactory.decodeFile(_path);
    if (mBitmap == null) {
        // bitmap still null
    } else {

        // kleine bitmap maken
        // deze in een imageview toevoegen aan layout lvPhotos

    }
}

}

我在第

行收到错误
super.OnActivityResult(requestCode, resultCode, data);

错误讯息:

The method onActivityResult(int, int, Intent) is undefined for the type LinearLayout

如果我退出,则不会调用onActivityResult函数。

我做错了什么?

RG, 埃里克

1 个答案:

答案 0 :(得分:2)

您正在从onActivityResult()班级致电LinearLayoutonActivityResult()方法特定于活动

有关详细信息,请参阅处理此主题的官方Android developers site

另外,最佳做法是从XML而不是Java代码创建布局。不仅代码编写速度更快,而且性能方面也更快。