[RESOLVIDO] - Android Studio - Intent com Envio de ImageView não funciona!

Boa noite.

Pessoal, seguinte: Tenho 3 Activitys (MainActivity, PrimeiraActivity e SegundaActivity) onde da MainActivity envio um Texto para PrimeiraActivity e uma imagem para SegundaActivity. O envio do texto tá de boa, mas o da imagem não funciona. Não dá erro, mas o app não está nem enviando a imagem da mainActivity para SegundaActivity.

Detalhe, o mesmo código foi implementado da mesma forma em outro projeto e roda, mas nesse não roda não sei pq.

Alguém?

Obg!

Mostra os códigos que vc envia as imgs

Sempre tem algum detalhe que acaba escapando e a gente só percebe depois

Certo. Olha, o problema é no envio da imagem. Se vc tirar uma foto, ela vai, mas se não tirar a foto e só quiser enviar a imagem do “W” ela não vai. Fecha a aplicação e não dá erro. No outro projeto, o “W” vai, mas nesse não.

XML (MainActivity):

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/texto"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_marginTop="50dp"
        android:background="@color/colorAccent"
        android:textAlignment="center"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/enviar_texto"
        style="@android:style/Widget.Button.Inset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:text="@string/enviar_texto"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/texto"/>

    <ImageView
        android:id="@+id/icone_w"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_marginTop="50dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/enviar_texto"
        app:srcCompat="@drawable/icone_w" />

    <TextView
        android:id="@+id/tire_a_foto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:gravity="center"
        android:text="@string/tire_a_foto"
        android:textAlignment="center"
        android:textColor="@color/colorPrimaryDark"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="@+id/icone_w"
        app:layout_constraintStart_toStartOf="@+id/icone_w"
        app:layout_constraintTop_toBottomOf="@+id/icone_w"/>

    <Button
        android:id="@+id/enviar_imagem"
        style="@android:style/Widget.Button.Inset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="@string/enviar_imagem"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tire_a_foto" />

</androidx.constraintlayout.widget.ConstraintLayout>

XML (PrimeiraActivity)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PrimeiraActivity">

    <TextView
        android:id="@+id/texto_recebido"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:text="@string/texto_recebido"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="30sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/texto"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_marginTop="30dp"
        android:background="@color/colorAccent"
        android:textAlignment="center"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="24sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/texto_recebido" />

</androidx.constraintlayout.widget.ConstraintLayout>

XML (SegundaActivity)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SegundaActivity">

    <TextView
        android:id="@+id/texto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="@string/imagem_recebida"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="30sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.github.chrisbanes.photoview.PhotoView
        android:id="@+id/foto"
        android:layout_width="350dp"
        android:layout_height="500dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/texto" />

</androidx.constraintlayout.widget.ConstraintLayout>

ACTIVITY (MainActivity)

package estudos.intentsenviodadosimagens;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity{

    EditText editText;
    ImageView imageView;
    String stTexto;
    Button btEnviarTexto, btEnviarImagem;

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

        editText = findViewById(R.id.texto);
        imageView = findViewById(R.id.icone_w);
        btEnviarTexto = findViewById(R.id.enviar_texto);
        btEnviarImagem = findViewById(R.id.enviar_imagem);

        // Envia o texto que for digitado no EditText
        btEnviarTexto.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                System.out.println("a1");
                stTexto = editText.getText().toString();
                System.out.println("a2");
                Intent intent = new Intent(getApplicationContext(), PrimeiraActivity.class);
                System.out.println("a3");
                intent.putExtra("envio_texto", stTexto);
                System.out.println("a4");
                startActivity(intent);
                System.out.println("a5");
            }
        });

        // Ao clicar na imageView, ela chama a camera do celular.
        imageView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent, 0);
            }
        });

        btEnviarImagem.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                System.out.println("b1");
                Bitmap bmFoto = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
                System.out.println("b2");
                Intent intent = new Intent(MainActivity.this, SegundaActivity.class);
                System.out.println("b3");
                intent.putExtra("envio_imagem", bmFoto);
                System.out.println("b4");
                startActivity(intent);
                System.out.println("b5");
            }
        });
    }

    // Método que recebe o resultado da Câmera do celular QUANDO "imageView" É CLICADA!
    public void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 0 && resultCode == RESULT_OK && data != null){
            try{
                Bundle bundle = data.getExtras();
                Bitmap bitmap = (Bitmap) bundle.get("data");
                imageView.setImageBitmap(bitmap);// seta a imageView para a foto tirada
            }
            catch(Exception e){
                Toast.makeText(this, R.string.falha, Toast.LENGTH_SHORT).show();
            }
        }
    }
}

ACTIVITY (PrimeiraActivity)

package estudos.intentsenviodadosimagens;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;


public class PrimeiraActivity extends AppCompatActivity{

    TextView tvTextoRecebido;
    String stIntentTexto;

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

        System.out.println("w1");
        tvTextoRecebido = findViewById(R.id.texto);
        System.out.println("w2");
        stIntentTexto = getIntent().getStringExtra("envio_texto");// recebe o texto que é enviado quando o botão "btEnviarTexto" do MainActivity é clicado
        System.out.println("w3");
        tvTextoRecebido.setText(stIntentTexto);
        System.out.println("w4");
    }
}

ACTIVITY (SegundaActivity)

package estudos.intentsenviodadosimagens;
import android.graphics.Bitmap;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.ImageView;
import com.github.chrisbanes.photoview.PhotoView;


public class SegundaActivity extends AppCompatActivity{

    Bitmap bitmapIntent;
    ImageView imageView;
    PhotoView photoView;

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

        System.out.println("y1");
        bitmapIntent = getIntent().getParcelableExtra("envio_imagem");// Recebe a imagem que é enviada quando o botão "btEnviarImagem" do MainActivity é clicado
        System.out.println("y2");
        photoView = findViewById(R.id.foto);
        System.out.println("y3");
        imageView = new ImageView(this);
        System.out.println("y4");
        imageView.setImageBitmap(bitmapIntent);
        System.out.println("y5");
        photoView.setImageDrawable(imageView.getDrawable());
        System.out.println("y6");
    }
}

Os resultados que tenho quando rodo o app no ENVIO DE TEXTO é o seguinte:

I/System.out: a1
    a2
    a3
    a4
I/System.out: a5
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@7416396
I/System.out: w1
    w2
    w3
I/System.out: w4

Ou seja, todos os souts foram impressos no RUN tanto os do MainActivity, quanto os da PrimeiraActivity.

Mas o resultado do ENVIO DA IMAGEM é o seguinte:

I/System.out: b1
    b2
    b3
I/System.out: b4
I/System.out: b5

Ou seja, ele nem realiza a Intent.

vc ja tem alguma img predefinida?

Tem. É a “icone-w” na linha app:srcCompat="@drawable/icone_w"

Já testei fazendo assim tbm: android:background="@drawable/icone_w", agora o erro está dando na linha que vc questionou Bitmap bmFoto = ((BitmapDrawable) imageView.getDrawable()).getBitmap();

java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
    at estudos.intentsenviodadosimagens.MainActivity$3.onClick(MainActivity.java:67)

Tenta assim, converte o bitmap pra byte[]

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.nome_icone);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

e passa assim:

Intent intent = new Intent(this, OutraAcitivty.class);
intent.putExtra("picture", byteArray);
startActivity(intent);

Blz. Mas tem algum erro na implementação?

Aparentemente não, mas ainda tô meio assim com esse trecho:

Ele funciona normalmente no outro projeto

Se funciona no outro deveria funcionar nesse, não há “bugs”, apenas coisas mal configuradas, eu já fiz muito isso, sempre achei q era o Android Studio q era bugado, mas era eu kkkkkk

A mesma coisa aconteceu com um Spinner de um Turno que tbm postei aki, ele não rodava de jeito nenhum, mas quando troquei pelo Spinner da Turma e só modifiquei os atributos de Turno pra Turma, a coisa rodou :expressionless: Por isso que akele menino falou no tal fusca in, fusca out vai entender…

Não não, não tem bug nem meu, nem do Android Studio.

Testei outras imagens pra enviar de uma Activity pra outra, todas as imagens foram envidas normalmente, mas quando coloco a “icone_w”, o app para de rodar e nem dá erro. Então coloquei a “icone_w” no outro projeto e tbm não abriu! :expressionless: Mesmo renomeando ela.

Logo o problema é a imagem “icone_w”, então reduzi o tamanho para 304x287 e esta (piii…) rodou! Acredita nisso? Mermããão… Tudo certo e vc quebrar a cabeça com um troço desses, é lasca.

Resolvido.

Obg pela atenção @rodriguesabner.