2011-07-11 156 views
4

我想製作一個支持縱向和橫向的應用程序。佈局有兩個窗格,左側是選項,右側顯示結果。當選擇一個選項時,右窗格顯示它。但對於肖像來說,沒有足夠的空間,所以需要單獨的活動。每個選項都會生成不同類型的片段,因此當活動之間的所有更改都是在其中添加片段時,我不希望爲每個選項製作活動。我想把主要活動的一個片段傳遞給新的,我該怎麼做?在活動之間傳遞片段

回答

4

我想從主要活動傳遞一個片段到新的片段,我該怎麼做?

你不會。至多,你會遵循@ Ribose的答案 - 通過一個額外的標誌傳入活動,以指示要創建的片段集合。

5

編輯:移動什麼asker實際上想要頂部。

如果您想在創建數據時將數據傳遞給Activity,請在startActivity()中使用的意圖調用版本Intent.putExtra()。然後,您可以使用getIntent().getStringExtra()(例如)在活動中獲得額外的字符串。

假設您在第一個活動myString中有一段字符串數據。

Intent intent = new Intent(this, SecondActivity.class); 
intent.putExtra(EXTRA_NAME_CONSTANT, myString); 
startActivity(intent); 

現在在onCreate新的活動,你會怎麼做:

String myString = this.getIntent() 
     .getStringExtra(EXTRA_NAME_CONSTANT, "default return value here"); 

的幾個注意事項:

  • 對於EXTRA_NAME_CONSTANT,我的意思,使形式的字符串常量「your.package.name.SomeString」例如「com.example.MyString」。就我個人而言,我甚至會使用資源(以getString(R.string.extra_my_string)的形式訪問)獲取額外的名稱。他們建議您在軟件包名稱前加上前綴。
  • 你可以放置並獲取從字符串到數組的許多類型的數據,甚至是可序列化的數據。

而不是使一個separete活動不同的佈局方向的考慮using resource qualifiers to provide alternative layouts

總之,讓兩個佈局的結構,像這樣:

/res/layout/yourlayout.xml 
/res/layout-land/yourlayout.xml 

如果雙方XML文件的命名一樣。然後將您的默認肖像佈局設置爲一個,並在另一個橫向版本中進行佈局。

當您在onCreate中膨脹佈局(並且在運行時在佈局更改時自動進行佈局)時,它將爲您選擇正確的佈局。

+0

我並不是想針對不同的佈局方向進行單獨的活動,但是如果您有兩個窗格並且它們都不適合,則需要爲第二個窗格創建一個新活動。我想將片段從一個活動傳遞給另一個活動。每個選項都會生成一個包含複選框和編輯文本的佈局,因此沒有兩個選項共享相同的佈局。 – Hank

+0

哦,非常好。通過模糊的單詞「片段」,我仍然認爲你的意思是你想要的任何類型的數據。我會更新我的答案。 – Ribose

+0

片段不能使用這種方法放在Extra中,當我的意思是片段時,我的意思是:http://developer.android.com/reference/android/app/Fragment.html – Hank