android ne peut pas obtenir le tableau d'octets à partir de l'intention
je suis en train d'envoyer un byte[] d'une activité à une autre. dans la réception de l'activité de l'byte[] semble être null après l'obtention de l'intention extras. des idées?
grâce.
Button save = (Button)findViewById(R.id.save);
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
touchView.isSaved = true;
Bundle bundle = new Bundle();
bundle.putByteArray("byteArr", touchView.data);
Intent intent = new Intent(mContext, SavePic.class);
intent.putExtra(bundle );
startActivity(intent);
}}) ;
.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.savepic);
final EditText edittext = (EditText) findViewById(R.id.edittext);
edittext.setText("");
edittext.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
//If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
//Perform action on key press
Bundle extras = getIntent().getExtras();
byte [] arr = extras.getByteArray("byteArr");
if(arr != null){
Log.e("xxxxxx", "********* arr not null");
}else{
Log.e("xxxxxx", "********* arr is null");
}
final Bitmap mCBitmap2 = BitmapFactory.decodeByteArray(arr, 0, arr.length);
.
[mise à jour]
j'ai changé les valeurs de clé de sorte que le ne sont pas les mêmes données/bytrArr, à l'intention maintenant juste passe un Bundle
OriginalL'auteur turtleboy | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
La valeur des clés n'est pas votre problème. Vous n'êtes pas à récupérer les données de la même manière que vous mettez dans.
Dans la première section de code, vous mettez un byte[] à l'intérieur d'un
Bundle
, puis de le mettreBundle
dans l'Intention extras. Cela signifie que le SUPPLÉMENT de la touche "data" est un ensemble, pas un byte[]. Vous n'avez pas besoin d'insérer les extras dans ce mode. Tout simplementintent.putExtra("byteArr", touchView.data)
pour insérer le byte[] comme un Supplément.Faisant cela, vous serez en mesure de récupérer votre byte[] de retour avec
getIntent().getByteArrayExtra("byteArr")
dans la deuxième section de code.Enfin, tout comme une note de côté, si vous AVEZ plusieurs extras dont vous avez voulu l'appliquer à un appel, vous pouvez les mettre chacun dans un Bundle et ensuite appeler
Intent.putExtras(bundle)
avoir toutes les données du Bundle placé individuellement dans l'Intention. Mais ce n'est pas le même que l'ajout de ce module comme un supplément de lui-même.HTH
salut, juste testé à nouveau et vous avez raison. il autre chose à faire avec mon code ne définissant pas le tableau avec les données de la première fois lors du premier démarrage de l'application. merci
OriginalL'auteur Devunwired
Ne pas donner le même nom de la clé à la fois les extras. Donner un nom différent.
Appelez simplement
intent.putExtra(bundle);
pour mettre le paquet dans l'intention.OriginalL'auteur Ronnie
Remplacer
avec
OriginalL'auteur Yashwanth Kumar