2017-10-05 128 views
2

我有一個帶有TextView(「@ + id/lblAccountHead」)的片段「AddNewIncomeFragment」。點擊textview後,它開始一個新的活動「AccountHeadListActivit」,它顯示了一個現有賬戶頭的列表。在從「AccountHeadListActivity」中選擇賬戶頭部時,我想用選定的賬戶名稱更新第一個活動的「lblAccountHead」,其他值需要保持不變。Xamarin Android - 從另一個活動更新一個活動的UI控件

早些時候我使用「消息中心」爲xamarin格式。現在我試圖在xamarin native(android)中做同樣的事情。

*****用第一溶液應用修訂****

在AddNewIncomeFragment點擊事件,開始考慮頭部活動:開戶頭活動

public void onAccounyHeadClick(object sender, EventArgs e) 
     { 
       var intend = new Intent(this.Activity, typeof(AccountHeadListActivity)); 
     //this.StartActivity(intend); 
     this.StartActivityForResult(intend, 1000); 
     } 

ListView的選擇事件

void OnSelection (object sender, SelectedItemChangedEventArgs e) 
     { 

        var result = new Intent(); 
     result.PutExtra("name", "Salary Account"); 
     result.PutExtra("id", 2); 
     SetResult(Result.Ok, result); 
     Finish(); 
     } 

在結束活動後,我想更新以前活動的textview和選定的帳戶頭名稱/ ID。請分享我們必須在xamarin andriod中執行此操作的選項,並使用StartActivityForResult,Local Notifications或任何最佳方法。


我已經實現了上述解決方案,它工作正常。但問題是 - 第二個活動「AccountHeadList」包含一個添加新帳戶鏈接,它啓動一個新的活動「AddNewAccount」 - 現在如果用戶創建一個新帳戶並保存它,那麼此活動需要關閉,第一個活動需要新更新創建帳戶名稱。所以基本上「StartActivityForResult」在涉及三項活動並且需要從第三項活動更新第一項活動時失敗 - 請建議。


感謝,

@保羅

+0

而不是使用finish()關閉第三個活動,您可以啓動第一個活動並通過一個包中的意圖傳遞所需的數據,然後在oncreate()方法中可以從包中獲取數據如果存在。 – Ogbe

回答

3

要接收結果,稱 startActivityForResult()而不是startActivity()

然後在您的第二個活動,叫setResult(result)方法來設置結果在您完成活動finish()之後,在您的原始活動中,您可以覆蓋方法

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent  data) { 
     // set the text view with the data from the result 
    } 
+0

謝謝,你建議的解決方案工作正常(我已經用應用解決方案更新了這個問題)。但是當它需要更新來自第三活動的第一活動時會出現問題,請參閱更新的問題以獲取詳細信息。 –

+0

你的第三項活動是直接打開你的第一項活動,還是必須經過第二項活動? – Ogbe

+0

第一次活動打開第二次活動是項目列表,如果需要項目不可用,則在第二次活動中添加新按鈕打開第三次活動添加新項目。添加項目後,新項目將顯示在第一個活動中。 –

相關問題