Интеграция git проекта в существующий проект startActivityForResult и onActivityResult android - PullRequest
0 голосов
/ 25 октября 2019

Я реализовал это git в моем текущем проекте без клонирования

реализация 'com.github.adityaarora1: LiveEdgeDetection: master-SNAPSHOT'

Но я не могу назвать это по моему методу. В документе написано

  1. Запустить startActivityForResult из вашей активности

startActivityForResult (новое намерение (this, ScanActivity.class), REQUEST_CODE);

Получить путь к файлу для обрезанного изображения в onActivityResult

String filePath = data.getExtras (). GetString (ScanConstants.SCANNED_RESULT);Растровое изображение baseBitmap = ScanUtils.decodeBitmapFromFile (filePath, ScanConstants.IMAGE_NAME);

Поэтому я попытался вызвать эту кнопку onClick, как из нового класса

   scan.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent(MainActivity.this,
                        ScanActivity.class);
                startActivity(myIntent);
            }

, и поместил остаток в свойonActivityResult

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

    String filePath = data.getExtras().getString(ScanConstants.SCANNED_RESULT);
    Bitmap baseBitmap = ScanUtils.decodeBitmapFromFile(filePath, ScanConstants.IMAGE_NAME);
}

Редактировать: вот MainActivity, который автор использовал для git, я пытался его использовать, но это дает мне ошибку

scannedImageView = findViewById (com.adityaarora.liveedgedetection.R.id.scanned_image);

MainActivity (импортировано)

private static final int REQUEST_CODE = 101;
private ImageView scannedImageView;
Button scan;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scan);
    scannedImageView = findViewById(com.adityaarora.liveedgedetection.R.id.scanned_image);
    startScan();

    scan = findViewById(R.id.open_scan);
        scan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(ScanActivity2.this,
                    ScanActivity.class);
            startActivityForResult(myIntent ,111);
        }
    });
}

private void startScan() {
    Intent intent = new Intent(this, ScanActivity.class);
    startActivityForResult(intent, REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE) {
        if(resultCode == Activity.RESULT_OK) {
            if(null != data && null != data.getExtras()) {
                String filePath = data.getExtras().getString(ScanConstants.SCANNED_RESULT);
                Bitmap baseBitmap = ScanUtils.decodeBitmapFromFile(filePath, ScanConstants.IMAGE_NAME);
                scannedImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                scannedImageView.setImageBitmap(baseBitmap);
            }
        } else if(resultCode == Activity.RESULT_CANCELED) {
            finish();
        }
    }
}

Обновление : после некоторых исследований я обнаружил, что импортированныйПроект был только для чтения файла и не может быть изменен (ScanActivity.java), и мой текущий проект был обновлен как SDK 28, который отличается от импортированного, так что есть некоторые ошибки в ScanActivity, поэтому кнопка (технически) не работала

1 Ответ

1 голос
/ 25 октября 2019

Вы должны использовать startActivityForResult вместо startActivity, как показано ниже.

scan.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         Intent myIntent = new Intent(MainActivity.this,
                        ScanActivity.class);
         startActivityForResult(myIntent ,111);
    }
});

и изменить onActivityResult как

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

    if(resultCode == Activity.RESULT_OK && requestCode == 111){
         String filePath = data.getExtras().getString(ScanConstants.SCANNED_RESULT);
         Bitmap baseBitmap = ScanUtils.decodeBitmapFromFile(filePath, ScanConstants.IMAGE_NAME);
         Log.d("YourTAG","File Path "+filePath);
         // here you can set bitmap to your image view 
         yourImageView.setImageBitmap(baseBitmap);
    }
}

ОБНОВЛЕНИЕ

Ваш основной вид деятельности должен быть похож на

private static final int REQUEST_CODE = 111;
private ImageView scannedImageView;
Button scan;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scan);
    scannedImageView = findViewById(R.id.scanned_image); // this  ImageView should be in your activity_scan.xml file with same id(scanned_image)
    startScan();

    scan = findViewById(R.id.open_scan);
    scan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           startScan();
        }
    });
}

private void startScan() {
    Intent intent = new Intent(ScanActivity2.this, ScanActivity.class);
    startActivityForResult(intent, REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE) {
        if(resultCode == Activity.RESULT_OK) {
            if(null != data && null != data.getExtras()) {
                String filePath = data.getExtras().getString(ScanConstants.SCANNED_RESULT);
                Bitmap baseBitmap = ScanUtils.decodeBitmapFromFile(filePath, ScanConstants.IMAGE_NAME);
                scannedImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                scannedImageView.setImageBitmap(baseBitmap);
            }
        } else if(resultCode == Activity.RESULT_CANCELED) {
            finish();
        }
    }
}

Демонстрационный проект

Я загрузил демонстрационный проект на Github, который интегрирован LiveEdgeDetectionбиблиотека и работает как положено. Чтобы проверить это иди сюда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...