Передача изображения через getIntent () putExtra () - PullRequest
0 голосов
/ 01 апреля 2019

Я новичок в Android Studio и переполнение стека, поэтому я не могу иметь никакого смысла, но я хочу передать некоторые данные из одного действия в другое.Мне удалось сделать это с помощью putExtra () по цели со всем текстом, который я хочу передать деятельности.Однако я не знаю, как установить getIntent для изображения, которое должно быть создано с помощью setImageResource ().

FavActivity

                        Cursor cursor = (Cursor) mylist.getItemAtPosition(position);
                        String listName = cursor.getString(1);
                        String displayName = db.getName(listName);

if (!displayName.isEmpty()) {
                            String isleName = db.getIsle(listName);
                            String rowName = db.getRow(listName);
                            String locationImage = db.getLocationImage(listName);
                            Intent myIntent = new Intent(view.getContext(),MainActivity.class);
                            myIntent.putExtra("name", displayName);
                            myIntent.putExtra("isle", "Isle: " + isleName);
                            myIntent.putExtra("row", "Row: " +rowName);
                            myIntent.putExtra("image", locationImage);
                            startActivity(myIntent);

MainActivity

        textView.setText(getIntent().getStringExtra("name"));
        textView3.setText(getIntent().getStringExtra("isle"));
        textView4.setText(getIntent().getStringExtra("row"));

Местоположение изображения должно быть настроено так, как оно конвертируется из текста базы данных

locationView.setImageResource(getResources().getIdentifier(locationImage, "drawable", getPackageName()));

Как мне установить намерение сделать это?

Ответы [ 3 ]

1 голос
/ 01 апреля 2019

Сохраните изображение в файле и передайте путь к файлу через намерение к другому активу, и вы можете получить доступ к изображению из этого пути к файлу в другом задании

0 голосов
/ 01 апреля 2019

Вы можете передать изображение, но я бы посоветовал сохранить изображение во Внутреннем хранилище и передать его с помощью Intent.

Начиная с API 24, существует ограничение в 1 МБ, в противном случае он может выдать TransactionTooLarge Exception и может стоить вам слишком много памяти

Сохранение образа во внутреннем хранилище -

public String createImageFromBitmap(Bitmap bitmap) {
    String fileName = "myImage";//no .png or .jpg needed
    try {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE);
        fo.write(bytes.toByteArray());
        // remember close file output
        fo.close();
    } catch (Exception e) {
        e.printStackTrace();
        fileName = null;
    }
    return fileName;
}

и затем передайте это имя файла в Bundle

Bitmap bitmap = BitmapFactory.decodeStream(context
                    .openFileInput("myImage"));

Еще один пример для использования

protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.my_layout);
    Bitmap bitmap = getIntent().getParcelableExtra("image");
    ImageView imageView = (ImageView) findViewById(R.id.imageview);
    imageView.setImageBitmap(bitmap);
 }
0 голосов
/ 01 апреля 2019

Hiii, Вы можете отправить изображение в формате Base64 и преобразовать его в изображение после получения в следующем действии.

Хотя убедитесь, что вы можете отправить максимум 50kb данных, используя Intents. В противном случае ваше приложение может неправильно работать при отправке и получении данных.

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