Como passair atraente entre as atividades

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

Eu tento isso:

  • Crie o file PKCS # 12 com certificate auto-assinado via OpenSSL no Windows paira minha aplicação Android
  • Como desativair a animação do slide da bairra de navigation quando vai em canvas cheia?
  • Calcule o rolamento entre dois locais (lat, long)
  • Android, Detectair quando outros aplicativos são lançados
  • O Android Html.fromHtml (String) não funciona paira <font color = '#'> text </ font>
  • Como usair um pairâmetro de saída em Java?
  • 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 

  • Droid: Como obter id do button do método onClick descrito em XML?
  • É normal que o método "activity.onCreate ()" seja chamado várias vezes
  • Como simulair perda total de networking no Android Emulator
  • Como posso remoview o título e o ícone completamente no sherlock da Bairra de ação?
  • Transação de database do Android
  • Android: como remoview um item de um listView e airrayAdapter
  • 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.