Android, присвоение значения переменным в методе onActivityResult?
Я пытаюсь получить некоторую информацию из моего метода onActivityResult, в моем случае это картинка, которую пользователь выбрал в субактивности, я считаю, что она работает нормально, с чем у меня возникают проблемы, когда я пытаюсь назначить эту картинку (в форма байтового массива) к переменной у меня в моей основной деятельности. Я пытаюсь использовать эту переменную в методе onClick, но по какой-то причине, когда я пытаюсь использовать эту переменную, ее значение всегда равно нулю. что может происходить? вот код:
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....
}
}
});
мой метод onActivityResult:
РЕДАКТИРОВАТЬ: решение было изменить
if(resultCode==1)
чтобы:
if(resultCode==RESULT_OK)
оказывается, RESULT_OK фактически равен -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();
}
}
}
мой метод onClickListener, где я пытаюсь использовать изображение, которое было установлено моим методом setPicture выше.
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();
}
}
}
}
});
Как видите, я поставил небольшой тест, а метод getPicture всегда возвращает ноль, я пробовал.equals вместо ==, и это приводит к сбою моего приложения. любая помощь приветствуется
1 ответ
Решение было изменить
if(resultCode==1)
чтобы:
if(resultCode==RESULT_OK)
оказывается, RESULT_OK фактически равен -1.