2015-02-11 62 views
-1

我有一個簡單的應用程序,需要做到以下幾點:如何在兩個android視圖之間傳遞數據?

  1. 從主視圖用戶點擊一個按鈕,啓動另一種看法。
  2. 顯示新視圖並收集用戶的信息。
  3. 一旦用戶在新視圖上單擊確定,我需要將該數據「發送」回原始視圖。

我發現的問題是,一旦我使用StartActivity(有意圖)或SetContentView(Resource.Layout.Main)是我的數據不見了。我把我收集的信息放在一個全局變量中,但是當我回到我的原始視圖時,它正在被重新創建。

如何將此數據傳回原始視圖以便我可以更新一些UI控件?

+0

可能重複http://stackoverflow.com/questions/ 21096523/xamarin-pass-data-between-activity) – Jason 2015-02-11 20:54:58

+0

@aleckz別忘了檢查正確的答案 – 2015-02-16 21:19:57

回答

0

必須調用startActivityForResult的意圖和執行捕捉onActivityResult是來自Class2中的信息。

活動的Class1:

startActivityForResult(new Intent(this, Class2.class), 1); 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      if(resultCode == RESULT_OK) { 
       // do something 
    } 
      super.onActivityResult(requestCode, resultCode, data); 
     } 

對於發送信息到Class則必須調用的setResult在你的包中的信息,並調用finish()。

活動等級2:

Bundle bundle = new Bundle(); 
    bundle.putString("---your info---"); 

    setResult(RESULT_OK, new Intent().putExtras(bundle)); 
finish(); 

閱讀節「啓動活動和獲取結果」從http://developer.android.com/reference/android/app/Activity.html

【活動期間Xamarin傳遞數據(的
+0

什麼是「返回」到Activity 1的正確方法?那是什麼setResult呢? – Alex 2015-02-11 21:17:52

+0

SetResult是這樣做的調用,但您必須調用finish來終止de Activity Class2並將Bundle返回到Class1 – 2015-02-11 21:19:16

+0

您必須使用來自Class1的startActivityForResult調用Class2 – 2015-02-11 21:21:37

相關問題