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