У меня есть 2 действия A, B и оба используются в них onActivityResult()
.WRONG onActivityResult() называется
Процесс:
onActivityResult()
в А работает штрафы.- У меня есть два
onActivityResult()
(показано в коде ниже) в действии B. Первый из них как clickableTextView
, который также отлично работает. Другой -Button
.
Проблема, с которой я столкнулся, заключается в кнопке, которая предполагает принести растровое изображение из суб-активности B и отображения в ImageView в B.. При нажатии кнопки она принимает меня к onActivityResult()
деятельности А.
startActivityForResult()
в пуговицу активность B:
int capSig = arg0.getId();
if(capSig == R.id.capSig) //Button which takes me to sub-activity of B
{
Intent goToCapSignatures = new Intent(this, CaptureSignature.class);
startActivityForResult(goToCapSignatures, GET_SIG);
}
, как я меняюсь ByteArray в растровое изображение и отправка Bitmap на активность B:
Bitmap returnedBitmap = Bitmap.createBitmap(mContent.getWidth(),
mContent.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
Drawable bgDrawable = mContent.getBackground();
if (bgDrawable != null)
bgDrawable.draw(canvas);
else
canvas.drawColor(Color.WHITE);
mContent.draw(canvas);
ByteArrayOutputStream bs = new ByteArrayOutputStream();
returnedBitmap.compress(Bitmap.CompressFormat.PNG, 50, bs);
byte[] byteArray = bs.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray , 0, byteArray.length);
//send the captured signature to Check and Operations page
Intent returncapSigIntent = new Intent();
returncapSigIntent.putExtra("signature",bitmap);
setResult(RESULT_OK, returncapSigIntent);
finish();
onActivityResult()
в активность B:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == GET_NOTES) // For textview (working fine)
{
if(resultCode == RESULT_OK)
{
if (data.hasExtra("notes ready"))
{
String readyNotes = data.getExtras().getString("notes ready");
showNotesFromNotesClass.setText(readyNotes);
}
}
if (requestCode == GET_SIG) // for Button - this isn't being
called instead
{
if(resultCode == RESULT_OK)
{
if (data.hasExtra("signature"))
//display Bitmap in an ImageView
capturedSigImageFromCapSigclass = (Bitmap) data.getExtras().get("signature");
imgSig.setImageBitmap(capturedSigImageFromCapSigclass);
}
}
}
}
}
onActivityResult()
в действии A: (Это вместо того, чтобы называться.
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK && requestCode == REQUEST_APPLIANCE) {
if (data.hasExtra("selected appliance"))
{
String selectedAppType = data.getExtras().getString("selected appliance");
tvApplianceType.setText(selectedAppType);
Toast.makeText(this, data.getExtras().getString("selected appliance"),
Toast.LENGTH_SHORT).show();
}
}
}
Я уверен, что я что-то делаю. пожалуйста, дайте мне несколько указателей или руководство, в которых я ошибаюсь. Это будет очень ценно, поскольку я уже провел дни на этой логике и никуда не денусь. Спасибо
Спасибо за ответ мат. Вы имеете в виду изменение 'requestCode' в моем коде' onActivityResult() 'like' if (resultCode == RESULT_OK && requestCode == 2) '? – user3677683
Нет, вам нужно изменить его там, где объявлены переменные GET_NOTES, GET_SIG и REQUEST_APPLIANCE, просто убедитесь, что они представляют разные числа среди них (они должны быть одинаковыми в вызывающем объекте и в действии, который получает результаты) –
Я сделал так, как предположил, однако все еще не работает. Пожалуйста, имейте в виду, что REQUEST_APPLIANCE находится в одном классе и GET_NOTES AND GET SIG как в другом классе. что это не работает, потому что я имею их в двух разных классах? – user3677683