Ich versuche, einige Informationen aus meiner onActivityResult-Methode abzurufen, in meinem Fall ist ein Bild, das der Benutzer in einer Unteraktivität ausgewählt hat, glaube ich, dass es gut funktioniert, mit dem ich Probleme habe, wenn ich versuche, dieses Bild zuzuweisen (in Form eines Byte-Arrays) zu einer Variablen, die ich in meiner Haupttätigkeit habe. Ich versuche, diese Variable in einer onClick-Methode zu verwenden, aber aus irgendeinem Grund, wenn ich versuche, diese Variable zu verwenden, ist ihr Wert immer null. was könnte passieren? hier ist der Code:Android, Zuweisung von Werten zu Variablen in OnActivityResult-Methode?
poptions.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) {
final Intent i;
switch(pos){
// Adjunta imagen
case 0:
i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("image/jpeg");
startActivityForResult(i,1);
//Toast.makeText(view.getContext(), "MIERDA!!", 30).show();
break; // more cases below, not relevant to my question....
}
}
});
meine onActivityResult Methode:
EDIT: Die Lösung wurde
if(resultCode==1)
zu ändern:
if(resultCode==RESULT_OK)
stellt sich heraus, RESULT_OK entspricht tatsächlich -1.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent pic){
super.onActivityResult(requestCode, resultCode, pic);
if(resultCode==1){
Uri selectedpic = pic.getData();
try {
Bitmap bitmappic = MediaStore.Images.Media.getBitmap(
this.getContentResolver(),
selectedpic);
ByteArrayOutputStream picstream = new ByteArrayOutputStream();
bitmappic.compress(Bitmap.CompressFormat.JPEG, 100, picstream);
setPicture(picstream.toByteArray());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
meine OnClickListener Methode, wo ich versuche, das Bild zu verwenden, die oben durch meine SetPicture Methode festgelegt wurde.
btnSend.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Bundle usrpostData = new Bundle();
if(txtMsg.getText().toString().equals("")){
Toast.makeText(v.getContext(), "MSG", 10).show();
}else{
String msg = txtMsg.getText().toString();
usrpostData.putString("message", msg);
if(getPicture()==null){
Toast.makeText(v.getContext(),"NULL",30).show();
}else{
try {
// do something with the picture...
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
});
Wie Sie Ich habe einen kleinen Test sehen, und die GetPicture Methode immer null zurück, habe ich versucht, .equals statt == und es macht meine App zum Absturz bringen.
if(resultCode==RESULT_OK)
stellt sich heraus, RESULT_OK entspricht tatsächlich -1: jede Hilfe sehr geschätzt wird
Können Sie angeben, unter welcher Activity-Methode Sie btnSend.onClickListener() aufrufen? Wenn es in onCreate() ist, ist die ursprüngliche Activity-Instanz, in der Sie das Bild gespeichert haben, bereits zerstört. – hopia
@hopia ja meine BtnSend.onClickListener() ist auf meine onCreate() -Methode, in der Haupttätigkeit, wo ich die Unteraktivität aufrufen. – Slacker616
Möchten Sie nur bestätigen, dass Sie den richtigen Parameter in onActivityResult() überprüfen? Ich denke, es sollte RequestCode sein. resultCode gibt normalerweise RESULT_OK, RESULT_CANCEL usw. zurück. Sie müssen nach requestCode suchen. Nichts mit ure Frage zu tun, obwohl :( – Shubhayu