2011-12-07 89 views
0

好的,首先,我承擔起我,因爲我對Android開發相對較新。實現兩個活動並在它們之間傳遞信息

所以這裏是情況。我有一個記錄數據的父(主)活動。可以說,爲了簡單起見,它包含一個編輯框。現在,子(sub)活動包含當前空白的單個文本視圖。默認情況下,當應用程序啓動時,主要活動已啓動。現在,當用戶在編輯框中輸入他的名字並點擊一個按鈕時,我希望將該名稱追加到第二個活動的文本視圖中。然後,我可以切換到第二個活動並查看該更改。然後,我點擊後退按鈕並輸入另一個名稱。當我再次切換到第二個活動時,我必須看到這種變化,等等。顯然,這個場景不僅包含編輯框和按鈕,但我認爲這個想法是一樣的。

因此,在本質上是我想知道的是:

  1. 我怎麼活動之間切換,保持在每個數據。我將不得不在運行時創建兩個活動?
  2. 如何在這些活動之間傳遞數據?
  3. 當我第二次活動的焦點時按下後退按鈕我如何停止完全關閉該活動?

感謝您的幫助!

+0

傳遞數據: http://stackoverflow.com/questions/2965109/passing-data-between-activities-in-android –

回答

0

您可以通過使用Intents來完成此操作。 這些基本上啓動了其他活動,並且能夠向他們添加額外的信息,這可以在其他活動中檢索到額外的好處。

在您的主要活動,當您點擊按鈕,添加以下內容:

EditText edittext = (EditText) findViewById(R.id.editTextID); 
Intent startSub = new Intent(this, SubActivity.class); 
String input = edittext.getText().toString(); 
startSub.putExtra("name", input); 
startActivity(startSub); 

這將啓動您的子活動。 現在,在子活動,你可以在你的onCreate檢索這些值()方法,像這樣:

Bundle extras = getIntent().getExtras(); 
    // make sure there is actually extra data 
    if (extras != null) { 
     String theName = extras.getString("name"); 
     TextView text = (TextView) findViewById(R.id.yourTextView); 
     text.setText(theName); 
    } 

當你回去,並重新進入一個新的名字Intent將再次產生,這意味着你的文本框會再次改變。

祝你好運!

+0

出衆!現在有點棘手。讓我們說,而不是setText我想使用append()。假設活動2實際上是某種類型的日誌模塊,因此在活動之間傳遞數據可能會變得相當臃腫。不對?如果是這樣,那麼我怎麼能說,保存活動2的狀態? – rameezk

+0

這可以通過使用'startActivityForResult'來完成。這會創建一個完成後發回數據的活動。您可以在主類中提取這些數據並保存,然後將其附加到前一個值。空字符串 - >用edittext數據填充 - >發送到活動2 - >發回完成 - >填充早期的字符串 - >追加新的數據 - >重複 至少這是我如何在我的想法,但我'當然你有不同的計劃。關於如何使用這種方法來回發送數據的更多信息可以在這裏找到:http://www.vogella.de/articles/AndroidIntent/article.html#explicitintents –

+0

嗯後,給你的問題一個快速的思考,我認爲你可能實際上正在尋找這樣的東西:http://stackoverflow.com/questions/151777/how-do-i-save-an-android-applications-state/ 這保存了應用程序的狀態,你可以重用當活動重新開放時。如果您不想將數據始終發送回1,然後返回2,那麼這可能是更好地保存第二類數據的方法。 –

0

你必須要這樣做。您可以通過以下意向傳遞數據:

Intent intent = new Intent(this, ActivityB.class); 
intent.putExtra("name", nameText); 

另一種方法是使用可在您的整個應用程序中訪問的sharedpreferences。

如果您希望後退按鈕不關閉您的活動,您需要重寫backButtonPressed方法並再次啓動activityA(使用intent標誌不會始終啓動新實例)。

至於節約活動狀態閱讀:活動之間http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState