【问题标题】:picking from android image gallery and loading it into another activity not working从android图像库中挑选并将其加载到另一个不起作用的活动中
【发布时间】:2018-07-01 16:24:41
【问题描述】:

我希望用户从图片库中选择一张图片,然后应用将进入另一个活动并在那里加载图片。 这是打开文件选择器。

 private void openFileChooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    getActivity().startActivityForResult(intent, PICK_IMAGE_REQUEST);
}

这就是我的 onActivityResult 中的内容

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
            && data != null && data.getData() != null) {
        mImageUri = data.getData();
        Intent intent = new Intent(getActivity(),AddActivity.class);
        intent.putExtra("imagePath",mImageUri.toString());
        intent.putExtra("requestCode",PICK_IMAGE_REQUEST);
        startActivity(intent);
    }

这是我的第二个活动的代码,基本上用户可以打开相机拍照或从图片库中选择。从相机拍照有效,但选择图像并不是我有两个请求代码的原因。

 @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_additem);
    Log.i(TAG, "onCreate: started");
    setupBottomNavigationView();

    imageView = findViewById(R.id.addPic);

    Bundle extras = getIntent().getExtras();

    int requestCode = extras.getInt("requestCode");
    if (requestCode == 0) {
        if (extras != null) {
            Bitmap image = (Bitmap) extras.get("image");
            if (image != null) {
                imageView.setImageBitmap(image);
            }
        }
        if (requestCode == 1) {
            Intent intent = getIntent();
            String image_path = intent.getStringExtra("imagePath");
            Uri fileUri = Uri.parse(image_path);
            imageView.setImageURI(fileUri);
        }
    }
}

无法理解为什么它不起作用,我的 android 应用程序在选择图像后甚至没有进入第二个活动。它只是返回到 home 活动。

【问题讨论】:

  • 这段代码(onActivityResult)是在 Activity 还是在 Fragment 中?可能类似于这个问题stackoverflow.com/questions/6147884/… 那里接受的答案建议调用startActivityForResult 而不是getActivity().startActivityForResult
  • 它来自一个片段。不过拍照效果很好

标签: java android android-image


【解决方案1】:

改变

if (requestCode == 0) {

if (requestCode != 0) {

【讨论】:

  • 但是requestcode == 0是拍照,1是选图?
  • 如果您想使用它,请选择其他一些值。比如1001,或者别的什么。 0 是我们得到的默认值,没有额外的。
【解决方案2】:

我不确定这是否是您提到的所有问题的原因,但您的 if 语句可能不应该嵌套时嵌套

if(requestCode == 0 ) {
    // only gets here if requestCode == 0

    if(requestCode == 1) {
        //this will never be executed, requestCode == 0
    }
}

我想你想要的东西更像

switch(requestCode) {
    case 0:
        // do stuff
        break;
    case 1:
        // do stuff
        break;
}

我假设PICK_IMAGE_REQUEST 被设置为1,这是不工作的情况?

【讨论】:

  • 您好,我将代码更改为 switch 语句,但它仍然没有工作。我选择图像后甚至没有打开第二个活动,甚至在我的片段类中也没有调用 startActivity。所以这意味着问题出在我的 onActivityResult 上?
  • 是的,我认为这与不启动第二个活动无关。您是否验证过您的代码在 onActivityResult 中被调用?
【解决方案3】:

好吧,我解决了。我在文件选择器()中调用活动的结果活动。我将其修改为 startActivityFor(...) 而不是 getActivity().startActivityFor(...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多