0
我有2个活动A,B和两个在他们使用onActivityResult()
。错误onActivityResult()被调用
的过程:
- 在一个
onActivityResult()
工作的罚款。 - 我有两个
onActivityResult()
(在下面的代码中显示)在活动B。第一个作为可点击TextView
这也正常工作。另一个为Button
。
我面对的问题是在Button中,它假设从B的子活动中引入位图并在B中的ImageView中显示。当我点击按钮,它带我到活动A的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的位图和发送位图到活动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();
在活动B onActivityResult()
:
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);
}
}
}
}
}
活动A中的
onActivityResult()
:(这被称为改为。
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();
}
}
}
我确定我正在做一些工作。请给我一些指点或指导,我会错误的。这将是非常感谢,因为我已经花了几天在这个逻辑,没有得到任何地方。谢谢
感谢回答伴侣。你的意思是像'if(resultCode == RESULT_OK && requestCode == 2)'那样在我的代码'onActivityResult()'中改变'requestCode'? – user3677683
不,你必须在声明变量GET_NOTES,GET_SIG和REQUEST_APPLIANCE的地方更改它,只要确保它们代表不同的数字(它们必须在活动调用者和获得结果的活动中相同) –
我已经完成了,但是仍然无法工作。请记住,REQUEST_APPLIANCE在一个类中,而GET_NOTES和GET SIG在不同的类中。是不是因为我在两个不同的类中有他们? – user3677683