我開發了三項被稱爲活動A,活動B和活動C的活動。首先,活動A是我的主要活動,當應用程序啓動時,活動A被創建。之後,我將移動到活動B startActivity(this,ActivityB.class)
,這裏沒有問題。問題是,當我想從活動B移動到活動C,並且我想從活動C獲取數據時,但是有時我可以獲取它並且有時我無法獲取它並轉移到活動AI會將我的代碼片段放在問題上,我怎麼能確定我可以一直提取數據?如何解決這個跳轉到之前關於startActivityForResult和onActivityResult的活動?
從Activiy移動到活動B.
Intent intent = new Intent(this,ActivityB.class);
intent.putExtra(User.USER_ID,id);
activity.startActivity(intent);
從活動B移動到活動ç
Intent intent = new Intent(this,ActivityC.class);
startActivityForResult(intent, REQUEST_CODE);
從活動Ç移動到活動乙與數據。
Intent returnIntent = new Intent(this,ActivityB.class);
Bundle bundle = new Bundle();
bundle.putByteArray("data",data);
returnIntent.putExtras(bundle);
setResult(Activity.RESULT_OK,returnIntent);
finish();
在活動B,我處理未來數據爲
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if(requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK){
try {
Bundle bundle = data.getExtras();
byte[] photo = bundle.getByteArray("data");
setPhoto(photo);
} catch (IOException e) {
e.printStackTrace();
}
}
}
此代碼的工作fine.However有時完成活動C,應用程序直接跳到活動A,我想以後以確保應用程序必須從活動C傳遞到活動B.
關於Activit y B生命週期:首先,所有的okey活動都會上升到onResume(),當startActivityForResult被調用時,它會保持onPause()。有時候,從Activity C回來後,我說,它可以正常工作,因爲Activity B正在爬到onResume(),但是有時候沒有任何生命週期日誌消息,並且直接傳遞到Activity A而不會損壞到Activity B.
你不需要Intent returnIntent = new Intent(this,ActivityB.class);意向returnIntent = new Intent()就夠了... – Andrey
@ ruan65謝謝評論,不過問題依然存在。 – user3751548
我可以假設你setPhoto()方法拋出一個異常(有時如果照片過大或...無論什麼),已處理的關閉B,所以A進入前... – Andrey