2015-08-26 69 views
0

我有一個視圖尋呼機作爲一個主要活動與多個片段。如何找出活動是否已經恢復,因爲堆棧頂部的另一個活動稱爲完成()

這個視圖分頁器中的一個片段啓動另一個活動來完成任務,然後完成(將其視爲選擇一張照片並將其保存到數據庫中)。

第二個活動完成後,我打電話給finish(),這使我回到我的視圖尋呼機中的前一個片段。

但是我需要知道包含視圖分頁器的活動是否已經啓動,因爲第二個活動的finish()被調用來執行某些操作(例如加載照片)。

我不知道如何將此信息傳遞迴前面的活動,我想避免使用額外標誌(CLEAR_ACTIVITY_TOP)的Intent,因爲這意味着我必須重新創建其他狀態查看尋呼機片段。

這可能嗎?有沒有辦法找出哪些活動的finish()導致當前的活動變爲活動?

非常感謝,

回答

1

您將不得不使用startActivityForResult(),並且您將在父Activity中的onActivityResult中獲得結果。像這樣的東西。

// Fragment in First Activity 
Intent i = new Intent(this, SecondActivity.class); 
getActivity().startActivityForResult(i, 1); 

//SecondActivity if sending back results 
Intent returnIntent = new Intent(); 
returnIntent.putExtra("result",result); 
setResult(RESULT_OK,returnIntent); 
finish(); 

//SecondActivity if not sending results. 

Intent returnIntent = new Intent(); 
setResult(RESULT_CANCELED, returnIntent); 
finish(); 

處理結果

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

if (requestCode == 1) { 
    if(resultCode == RESULT_OK){ 
     String result=data.getStringExtra("result"); 
    } 
    if (resultCode == RESULT_CANCELED) { 
     //Write your code if there's no result 
    } 
} 
} 

參考 How to manage `startActivityForResult` on Android?

2

看看startActivityForResult。更多文檔在Activity page的「開始活動和獲得結果」部分下。

有時您希望在活動結束時從活動中取回結果。例如,您可以開始一項活動,讓用戶在聯繫人列表中選擇一個人;當它結束時,它返回被選中的人。爲此,可以使用第二個整數參數來調用startActivityForResult(Intent,int)版本來標識調用。結果將通過onActivityResult(int,int,Intent)方法返回。

1

當你第一次去第二個活動,像這樣稱呼它。

Intent intent = new Intent(this, YourSecondActivity.class); 
startActivityForResult(intent, requestCode); 

請求代碼是一個整數,可以讓您識別哪個活動隨後返回結果。

每當你在你的第二個活動完成後,調用finish()之前發回你所需要的額外的數據,這樣

Intent intent = new Intent(); 
intent.putExtra("yourData", yourVariable); 
setResult(RESULT_OK, intent); 
finish(); 

早在第一個活動,覆蓋onActivityResult()方法,做任何你需要與返回的數據。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 1) { 
     if(resultCode == RESULT_OK){ 
      String result=data.getStringExtra("yourData"); 
     } 
    } 
} 

現在您應該能夠確定哪些活動正在返回,併發回您可能需要的任何其他數據!

相關問題