выбрать из галереи изображений Android и загрузить его в другой деятельности не работает - PullRequest
0 голосов
/ 01 июля 2018

Я хочу, чтобы пользователь выбрал изображение из галереи изображений, и приложение перейдет к другой операции и загрузит изображение там. Это открыть файл выбора.

 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 даже не переходит ко второму действию после выбора изображения. Он просто возвращается к домашнему занятию.

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Я не уверен, является ли это причиной всех проблем, которые вы отметили, но ваши операторы 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, и это не работает?

0 голосов
/ 02 июля 2018

Хорошо, я решил это. Я вызывал действия на результат деятельности в файле chooser (). Я изменил это, чтобы просто запустить ActivityFor (...) вместо getActivity (). StartActivityFor (...)

0 голосов
/ 01 июля 2018

изменение

if (requestCode == 0) {

до

if (requestCode != 0) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...