Как отобразить то же изображение viewview1 в Activity1 от пользователя, выбранного в Activity 2 imageview2? - PullRequest
0 голосов
/ 29 октября 2019

Это xml-упражнение 1:

    <ImageView
    android:id="@+id/imageView"
    android:layout_width="136dp"
    android:layout_height="143dp"
    android:layout_marginTop="92dp"
    android:layout_weight="1"
    android:background="@drawable/image_border"
    android:contentDescription="@string/todo"
    android:padding="1dp"
    android:scaleType="fitXY"
    android:src="@drawable/ic_image_black_24dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.098"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.952" />

Это java-файл занятия 1, где пользователь выбирает изображение в телефоне галереи и отображает его в упражнении 1:

package com.example.ProPentest;

  import android.content.Intent;
  import android.graphics.Bitmap;
  import android.net.Uri;
  import android.os.Bundle;
  import android.provider.MediaStore;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.ImageView;
  import android.widget.Spinner;
  import android.widget.Toast;
  import androidx.annotation.Nullable;
  import androidx.appcompat.app.AppCompatActivity;
  import java.io.IOException;

  public class form2 extends AppCompatActivity  implements AdapterView.OnItemSelectedListener {

  private static final String TAG = form2.class.getSimpleName();
  private int PICK_IMAGE_REQUEST = 1;


Button btn;
EditText et1, et2, et3, et4, et5;
String st, st1, st2, st3, st4, st5, st6, st7;
Bitmap bmp;
Spinner sp1, sp2, sp3;
ImageView iv;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_form2);

    btn =findViewById( R.id.finish );
    et1=findViewById( R.id.editText2 );
    et2=findViewById( R.id.editText );
    et3=findViewById( R.id.assettext );
    et4=findViewById( R.id.et4 );
    et5=findViewById( R.id.et5 );
    sp1=findViewById( R.id.spinner );
    sp2=findViewById( R.id.spinner2 );
    sp3=findViewById( R.id.spinner3 );
    iv=findViewById( R.id.imageView );

    btn.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent( form2.this, display.class );
            st = et1.getText().toString();
            st1 = et2.getText().toString();
            st2 = et3.getText().toString();
            st3 = et4.getText().toString();
            st4 = et5.getText().toString();
            st5 = sp1.getSelectedItem().toString();
            st6 = sp2.getSelectedItem().toString();
            st7 = sp3.getSelectedItem().toString();
            bmp = iv.getDrawingCache();
            i.putExtra( "Name", st );
            i.putExtra( "Date", st1 );
            i.putExtra( "Asset", st2 );
            i.putExtra( "Repro", st3 );
            i.putExtra( "Note", st4 );
            i.putExtra( "Spinner", st5 );
            i.putExtra( "Spinner2", st6 );
            i.putExtra( "Spinner3", st7 );
            i.putExtra( "imageView2", bmp );
            startActivity( i );
            finish();
        }});
            Button selectImage = findViewById(R.id.uploadImage);

            selectImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    chooseImage();
                }
            });
        }

        private void chooseImage() {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Picture"), 
  PICK_IMAGE_REQUEST);

        }

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String text = parent.getItemAtPosition( position ).toString();
    Toast.makeText( parent.getContext(), text, Toast.LENGTH_SHORT ).show();
}
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && 
  data.getData() != null) {

        Uri uri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            // Log.d(TAG, String.valueOf(bitmap));

            ImageView imageView = findViewById(R.id.imageView);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}

}

Этоxml Activity2:

        <ImageView
        android:id="@+id/imageView2"
        android:layout_width="190dp"
        android:layout_height="248dp"
        android:layout_weight="1"
        android:background="@drawable/image_border"
        android:contentDescription="@string/todo"
        android:padding="1dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_image_black_24dp" />

Это Java-файл упражнения 2:

package com.example.ProPentest;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class display extends AppCompatActivity {

TextView tv1, tv2, tv3, tv4, tv5, tv6, tv7, tv8;
String st, st1, st2, st3, st4, st5, st6, st7;
Bitmap bmp;
ImageView iv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_display );

    tv1 = findViewById( R.id.company_name );
    tv2 = findViewById( R.id.date );
    tv3 = findViewById( R.id.assettext );
    tv4 = findViewById( R.id.reprotext );
    tv5 = findViewById( R.id.notetext );
    tv6 = findViewById( R.id.basevultext );
    tv7 = findViewById( R.id.likelitext );
    tv8 = findViewById( R.id.priotext );
    iv = findViewById( R.id.imageView2 );

    st = getIntent().getExtras().getString( "Name" );
    tv1.setText( st );
    st1 = getIntent().getExtras().getString( "Date" );
    tv2.setText( st1 );
    st2 = getIntent().getExtras().getString( "Asset" );
    tv3.setText( st2 );
    st3 = getIntent().getExtras().getString( "Repro" );
    tv4.setText( st3 );
    st4 = getIntent().getExtras().getString( "Note" );
    tv5.setText( st4 );
    st5 = getIntent().getExtras().getString( "Spinner" );
    tv6.setText( st5 );
    st6 = getIntent().getExtras().getString( "Spinner2" );
    tv7.setText( st6 );
    st7 = getIntent().getExtras().getString( "Spinner3" );
    tv8.setText( st7 );
    bmp = getIntent().getExtras().getParcelable("imageView2");
    iv.setImageBitmap( bmp );




}}

Я попытался передать изображение-видение другому типу изображения-вида2, но я привел к белому изображению. Я хочу, чтобы изображение, выбранное пользователем из галереи, передавалось из imageview1 в imageview2 внутри другого действия.

1 Ответ

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

В вашем сценарии пас URI для второго действия, используя намерение URI, которое вы получаете onActivityResult метод

intent.putExtra("imageUri", imageUri.toString());

и во втором упражнении получите URI и установите его в Imageview

Uri myUri = Uri.parse(extras.getString("imageUri"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...