這一節的主要內容
1、在執行時新增乙個fragment到activity
2、替換fragment
為了適應不同大小的螢幕,我們可以根據螢幕的大小動態地在不同的布局檔案中重用fragment。比如,對於在手機上,我們可能就只能顯示乙個fragment,而在平板電腦上我們就可以並列地在介面上顯示兩個fragment,以便顯示更多的資訊。
圖1.同乙個activity中的兩個fragment在大小不同的螢幕上的顯示效果。在大螢幕上,兩個fragment並列顯示。而在小螢幕上,同一時間只顯示乙個fragment,另乙個fragment當使用者需要的時候才顯示。
除了在xml配置檔案中定義乙個fragment--像上一節我們講到的使用元素--你也可以在activity執行時向他新增乙個fragment。如果你打算在activity存活的時候,改變fragment,這就很有必要。
方法中初始化fragment。
使用fragment很重要的一點是--特別是當你想要在執行時新增fragment--就是fragment必須裝在布局中的乙個容器view裡面.
下面的布局方式相對於上一節所講的不能在執行時被修改的fragment布局方式是另一種選擇。為了可以將布局中的fragment替換成另乙個,在activity中必須有乙個空的framelayout,以便作為fragment的容器。
注意下面的檔名跟上一節的布局檔案的名字一樣,但是布局檔案的路徑中沒有large限定詞,所以這個布局使用在比large尺寸更小的螢幕上的,因為螢幕的大小不足以同時將所有的fragment放進去。
res/layout/news_articles.xml:
<framelayout
xmlns:android
=
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height增加乙個fragment.="match_parent"
/>
下面的例子展示的是怎麼向前面的布局檔案新增乙個fragment:
package因為上面的fragment是在執行時被新增到com.bang.testfragment;
import
android.os.bundle;
import
public
class mainactivity extends
fragmentactivity
//在activity的布局中建立乙個可以被替換的新fragment
headlinesfragment firstfragment = new
headlinesfragment();
//為了防止activity使用intent的方式啟動的一些特殊引數資訊被遺漏,
//我們將intent中的額外資訊作為引數傳遞給fragment
firstfragment.setarguments(getintent().getextras());
//將fragment新增到'fragment_container'的framelayout中
getsupportfragmentmanager().begintransaction()
.add(r.id.fragment_container, firstfragment).commit();}}
}
framelayout中的--而不是在activity中的布局檔案中用元素定義的--所以activity可以將原有的fragment替換或者移除。
.
注意:當你刪除或替換乙個fragment並將新增fragment事務到back stack,被刪除的其實是停止了(而不是銷毀)。如果使用者為了恢復fragment而回退,它就會重新啟動。如果你沒有將fragment事務新增到back stack中,那麼當fragment被刪除或替換的時候,它就是真的被銷毀了。
下面**展示如何用替換fragment
//apis去做一些高階的fragment操作。建立乙個fragment並將特定的文章資訊作為引數傳遞給它
articlefragment newfragment = new
articlefragment();
bundle args = new
bundle();
args.putint(articlefragment.arg_position, position);
newfragment.setarguments(args);
fragmenttransaction transaction =getsupportfragmentmanager().begintransaction();
//用這個新的fragment替換在fragment_container中的任何東西
//並將事務新增到back stack 中,以便使用者可以回退,恢復之前的操作
transaction.replace(r.id.fragment_container, newfragment);
transaction.addtobackstack(
null
);
//提交事務
transaction.commit();
參考鏈結
建立靈活的使用者介面
這一節的主要內容 1 在執行時新增乙個fragment到activity 2 替換fragment 為了適應不同大小的螢幕,我們可以根據螢幕的大小動態地在不同的布局檔案中重用fragment。比如,對於在手機上,我們可能就只能顯示乙個fragment,而在平板電腦上我們就可以並列地在介面上顯示兩個f...
構建靈活的介面
在設計支援各種螢幕尺寸的應用時,你可以在不同的布局配置中重複使用 fragment 以便根據相應的螢幕空間提供更出色的使用者體驗。例如,一次只顯示乙個 fragment 可能就很適合手機這種單窗格介面,但在平板電腦上,你可能需要設定並列的 fragment,因為平板電腦的螢幕尺寸較寬闊,可向使用者顯...
如何建立使用者介面?
android中的檢視和布局的定義是什麼?區別是什麼?在android系統中有哪些元素用於建立ui?如何使用布局 fragment和檢視來為activity建立ui?android sdk關於ui的介紹,可以參考 android ui的每乙個獨立元素都是使用源於viewgroup的各種布局管理器布置...