【问题标题】:How can I send back the captured image taken from second activity back to the main activity?如何将从第二个活动拍摄的捕获图像发回主要活动?
【发布时间】:2021-02-14 03:51:42
【问题描述】:

这是我来自名为Account 类的主活动类的代码,其中当我按下添加条目按钮时,它将导航到下一个活动,即AddEntry

    //ADD ENTRY BUTTON
    accountBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Account.this, AddEntry.class);
            startActivityForResult(intent,REQUEST_CODE_ADD);
        }
    });

进入第二个活动AddEntry 类后,当点击名为entryPhoto 的ImageView 时,将使用用户的相机拍摄一张图片

    entryPhoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent takePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File tempImage = null;
            try {
                tempImage = createImage();
            } catch (Exception e) {
                e.printStackTrace();
            }

            if (tempImage != null){
                Uri uriImage = FileProvider.getUriForFile(c,"com.example.login.fileprovider",
                        tempImage);
                mCurrentPhotoUri = uriImage;
                takePhoto.putExtra(MediaStore.EXTRA_OUTPUT,uriImage);

                if (ContextCompat.checkSelfPermission(c, Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(AddEntry.this,
                            new String[]{Manifest.permission.CAMERA},
                            REQ_CODE_CAMERA);

                }
                else {
                    startActivityForResult(takePhoto,REQ_CODE_TAKE_PHOTO);
                }

            }
        }
    });
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQ_CODE_TAKE_PHOTO && resultCode == RESULT_OK) {
        entryPhoto.setImageURI(mCurrentPhotoUri);
    }

这是我将用户输入的所有信息然后将其发送回主活动的代码。在 addPhoto 中,我应该放置要传递的图像。我只尝试从可绘制对象中传递图像,因为我真的不知道如何传递捕获的图像。

    Intent data = new Intent();
                data.putExtra("addPhoto",R.drawable.anonymous);
                data.putExtra("addName", entryName.getText().toString());
                data.putExtra("addRemark", entryRemark.getText().toString());
                data.putExtra("addBirthday", entryBirthday.getText().toString());
                data.putExtra("addAddress", entryAddress.getText().toString());
                data.putExtra("addGender", selectedGender);
                data.putExtra("addContactNo", entryContactNo.getText().toString());
                data.putExtra("addHobbies", entryHobbies.getText().toString());
                data.putExtra("addOtherInfo", entryOtherInfo.getText().toString());
                setResult(RESULT_OK,data);
                finish();

这是主活动中 onActivityResult 中的代码

    @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data); //ONACTRESULT OF ADD ENTRY
    if (requestCode == REQUEST_CODE_ADD && resultCode == RESULT_OK){
        int addPhoto = data.getIntExtra("addPhoto",1);
        String addName = data.getStringExtra("addName");
        String addRemark = data.getStringExtra("addRemark");
        String addBirthday = data.getStringExtra("addBirthday");
        String addAddress = data.getStringExtra("addAddress");
        String addContactNo = data.getStringExtra("addContactNo");
        String addGender = data.getStringExtra("addGender");
        String addHobbies = data.getStringExtra("addHobbies");
        String addOtherInfo = data.getStringExtra("addOtherInfo");

        entryList.add(0,new Entry(addPhoto,addName,addRemark,addBirthday,addGender,addAddress,addContactNo,addHobbies,addOtherInfo));
        myAdapter.notifyDataSetChanged();
    }

希望你能帮助我。我仍然是初学者,但我真的很想擅长编程。提前谢谢你。

【问题讨论】:

    标签: android android-intent android-image


    【解决方案1】:

    我认为您可以在 Intent 的捆绑包中直接传递 Uri,因为它扩展了 Parcelable,这意味着它可以按原样检索

    添加

    data.putExtra("addPhoto", mCurrentPhotoUri);
    

    检索

    Uri photoUri = getIntent().getParcelableExtra<Uri>("addPhoto");
    

    【讨论】:

    • 你能告诉我如何将它添加到我的数组列表中吗? entryList.add(0,new Entry(addPhoto,addName,addRemark,addBirthday,addGender,addAddress,addContactNo,addHobbies,addOtherInfo));鉴于 addPhoto 是一个整数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2020-05-05
    相关资源
    最近更新 更多