1 回答

TA貢獻1845條經(jīng)驗 獲得超8個贊
將數(shù)據(jù)傳遞給另一個 Activity 并返回:
... your code
? @Override
? public void onActivityResult(int reqCode, int resCode, Intent data) {
? ? if(reqCode == REQ_TAKE_PICTURE) {
? ? ?String uriExtra = data.getStringExtra(TakePictureActivity.RESULT_IMAGE_URI);
? ? ?int positionExtra = data.getIntExtra("PhotoParentPosition")
updateImageItem(Uri.parse(uriExtra), positionExtra)
? ? }
? }
... your code
private void startTakePhoto(int position) {
? ? // saving state which is better to avoid
? ? tempItemPosition = position;
? ? Intent intent = new Intent(this, TakePhotoActivity.class);
? ? intent.putExtra("PhotoParentPosition", position);
? ? startActivityForResult(intent, REQ_TAKE_PICTURE);
? }
在您的其他活動 (TakePhotoActivity) 中,您從創(chuàng)建 Intent 中獲得額外的 ("PhotoParentPosition") 并將其放在結(jié)果 Intent 上。
另一種選擇是使用 AndroidX ViewModel 并在兩個活動之間使用共享的 ViewModel。
ViewModel 的想法是它是一個數(shù)據(jù)類,可以保存有關(guān)您的視圖的數(shù)據(jù)(例如選擇列表項位置),該數(shù)據(jù)可以跨活動和跨配置更改保存。
Architecture Components 為負(fù)責(zé)為 UI 準(zhǔn)備數(shù)據(jù)的 UI 控制器提供 ViewModel 輔助類。ViewModel 對象在配置更改期間自動保留,以便它們保存的數(shù)據(jù)可立即用于下一個活動或片段實例。例如,如果您需要在您的應(yīng)用程序中顯示用戶列表,請確保將獲取和保存用戶列表的責(zé)任分配給 ViewModel,而不是活動或片段,如以下示例代碼所示:
添加回答
舉報