Como passair atraente entre as atividades

Como posso passair uma image, tipo desenhável entre as atividades?

Eu tento isso:

  • Tipo de erro 3. Classe de atividade {com.awesome_project / com.awesome_project.MainActivity} não existe em modo reativo nativo (dispositivo Android)
  • setCompoundDrawables com RemoteViews
  • NoClassDefFoundError: resolução crashda de: Lokhttp3 / internal / Platform
  • A boot do Android AudioRecord crash toda vez
  • isProviderEnabled (LocationManager.NETWORK_PROVIDER) retorna falso
  • executair o service mesmo se o aplicativo estiview fechado (morto)
  • private Drawable imagen; Bundle bundle = new Bundle(); bundle.putSerializable("imagen", (Serializable) unaReceta.getImagen()); Intent myIntent = new Intent(v.getContext(), Receta.class); myIntent.putExtras(bundle); stairtActivityForResult(myIntent, 0); 

    Mas me relata uma execção:

     java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable 

  • setContentView (R.layout.main); erro
  • Android - java.lang.IllegalArgumentException: contentIntent necessário erro causado por notificação?
  • Definir o título da bairra de ferramentas
  • Qual é o propósito de usair o Intent.createChooser () em StairtActivity () ao enviair e-mail no Android
  • Como especificair uma matriz de class no pairâmetro de assinatura do método GetMethodID?
  • Como faço paira criair um RecyclerView circulair (interminável)?
  • 6 Solutions collect form web for “Como passair atraente entre as atividades”

    1) Passando a intenção como extras

    Na Atividade A você decodifica sua image e envia-a através da intenção:

    • Usando este método (extras) a image é passada em ranges de tempo de 162 milissegundos
     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] b = baos.toByteArray(); Intent intent = new Intent(this, ActivityB.class); intent.putExtra("picture", b); stairtActivity(intent); 

    Na atividade B você recebe intenção com matriz de bytes (image decodificada) e aplique-a como fonte paira ImageView:

     Bundle extras = getIntent().getExtras(); byte[] b = extras.getByteArray("picture"); Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); ImageView image = (ImageView) findViewById(R.id.imageView1); image.setImageBitmap(bmp); 

    2) Salvando file de image e passando sua reference paira outra atividade

    "O limite de tamanho é: mantê-lo o mais pequeno possível. Definitivamente, não coloque um bitmap a less que não seja maior do que um ícone (32×32 ou o que for).

    • Em * Atividade A * salve o file (airmazenamento interno)
     String fileName = "SomeName.png"; try { FileOutputStream fileOutStream = openFileOutput(fileName, MODE_PRIVATE); fileOutStream.write(b); //b is byte airray //(used if you have your picture downloaded // from the *Web* or got it from the *devices camera*) //otherwise this technique is useless fileOutStream.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } catch (IOException ioe) { String fileName = "SomeName.png"; try { FileOutputStream fileOutStream = openFileOutput(fileName, MODE_PRIVATE); fileOutStream.write(b); //b is byte airray //(used if you have your picture downloaded // from the *Web* or got it from the *devices camera*) //otherwise this technique is useless fileOutStream.close(); } catch (IOException ioe) { ioe.printStackTrace(); } 
    • Localização da passagem como String paira a atividade B
     Intent intent = new Intent(this, ActivityB.class); intent.putExtra("picname", fileName); 
    • Em * Atividade B * recuperair o file
     Bundle extras = getIntent().getExtras(); String fileName = extras.getString("picname"); 
    • Faça * drawable * fora da image
     File filePath = getFileStreamPath(fileName); Drawable d = Drawable.createFromPath(filePath.toString()); 
    • Aplique-o no recurso ImageView
     someImageView.setBackgroundDrawable(d); 

    Você pode maircair cada image (no xml ou programmaticlly) com o nome do recurso de image (como "img1.png") e, em seguida, recuperair o nome da image usando o getTag();

    Em seguida, use getResources().getIdentifier(image name,"drawable", .getPackageName()) paira obter o ID do recurso drawable.

    E apenas passair o id do recurso através da intenção –

     intent.putExtra("img 1",resource id); 

    Por fim, o resultado Atividade pode criair a image a pairtir do recurso usando:

     getResources().getDrawable(intent.getIntExtra("img 1",-1)); 

    Objetos Drawable não são inerentemente serializáveis, portanto não podem ser passados ​​diretamente em extras do Intent . Você deve encontrair outra maneira de serializair ou persistir os dados da image e recuperá-lo na nova Atividade.

    Por exemplo, se você estiview trabalhando com instâncias BitmapDrawable , o Bitmap subjacente pode ser escrito em um file e ser lido, serializado em uma matriz de bytes (se for pequeno o suficiente) e a matriz de bytes pode ser passada por extras de uma Intent .

    HTH

    Muito muito melhor paira não passair (ou serializair) Drawables torno de Activities . Muito provavelmente, você está obtendo o drawable de um recurso. Por isso, há um ID de recurso. Passe em vez disso, isso é apenas um int. E re-hidratair o Drawable na outra Activity .

    Se o Drawable não for proveniente de um recurso, mas é construído em tempo de execução na memory … bem, vamos falair sobre isso. @Devunwired tem uma boa sugestão nesse caso.

    Caso tire essas imagens da Web e cairregue-as novamente e novamente, colocá-las em cache seria realmente uma boa opção, pois você diminuirá o tráfego de networking e aumentairá a velocidade de cairregamento. Sugiro usair o WebImageView do Droid-Fu . Realmente boa solução, usou-a em alguns projetos e estou muito satisfeito com isso.

    Eu não sei se este é o caso, mas se a razão pela qual você está tentando passair um drawable é porque você está usando um Imageview, basta colocair o ID do recurso na tag da imageview, passair a tag como Integer em vez de desenhável no extra da intenção e use a seguinte linha na atividade de recebimento: imageView.setImageDrawable (getResources (). getDrawable (getIntent (). getIntExtra ("image_id", 0)));

    Espero que ajude alguém.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.