问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用Android UI Fragment开发分页界面

发布网友 发布时间:2022-05-13 01:47

我来回答

1个回答

热心网友 时间:2023-11-07 16:51

需要在activity视图层级结构中为fragment视图安排位置,创建fragment容器布局:
step1/3 创建Fragment容器布局
activity_crime.xml
<FragmeLayout xmlns:android:"https://schemas.android.com/apk/res/android"
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

step2/3 创建UI Fragment
但此时,activity还未托管fragment,所以代码运行后UI看不到任何内容。接下来需要编写代码,创建UI Fragment,覆写fragment的生命周期函数(几乎对应到activity的声明周期函数)。 创建fragment和创建activity步骤相同:定义布局文件、创建fragment子类、在代码中关联布局文件声明的组件。
public class CrimeFragment extends Fragment {
private Crime mCrime;
private EditText mTitleField;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCrime = new Crime();
}

@Override
// 由onCreateView方法生成fragment的视图
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_crime, parent, false);
// 调用View.findViewById(int)
mTitleField = (EditText)v.findViewById(R.id.crime_title);
// *方法设置和activity一样
mTitleField.addTextChangedListener(new TextWathcer() {
public void onTextChanged(...) {}
public void beforeTextChanged(...) {}
public void afterTextChanged(...) {}
});

return v;
}
}

step3/3 添加UI Fragment到FragmentManager
但此时运行,仍然看不到fragment,还需要将fragment的视图放置到FrameLayout容器中,以添加给activity。所以并没有“start fragment”这个概念。 FragmentManager类负责管理fragment并将它们的视图添加到activity的视图层级结构中。fragment transactions(事务)被用来添加、移除、附加、分离或替换fragment队列中的fragment。这是使用fragment在运行时组装和重新组装用户界面的核心方式。FragmentManager管理着fragment transactions的回退栈。
import android.support.v4.app.Fragment
public class CrimeActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crime);

FragmentManager fm = getSupportFragmentManager();

// 使用R.id.fragmentContainer的容器视图资源ID,向FragmentManager请求获取fragment。如要获取的fragment在队列中已经存在,FragmentManager随即会将之返还。
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);

// 如指定容器视图资源ID的fragment不存在,则fragment变量为空值。
// 这时应创建一个新的CrimeFragment,并创建一个新的fragment transaction用来把新建的fragment添加到队列中。
if (fragment == null) {
fragment = new CrimeFragment();
fm.beginTransaction()
.add(R.id.fragmentContainer, fragment)
.commit();
}
}
}

FragmentManager保持fragment与activity的状态一致,但fragment方法究竟是在activity方法之前还是之后调用的这一点是无法保证的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华丽转身为什么在优酷看不了了之 《华丽转身:爱情不在服务区》txt全集下载 翡翠台华丽转身英文曲 matplotlib中plt.imshow函数画图出现的颜色问题 数字图像处理(c++ opencv):形态学图像处理-提取连通域 ...opencv做东西,网上的程序读着还可以,程序遇到问题不会改,一些函_百... 深度学习面试问题总结 | 传统图像处理——OpenCV 活虾如何在晚上保持存活状态进行保存? neu代表什么意思 民办学校和私立学校的区别是什么民办学校和私立学校的区别 吃香蕉会叫人的心情变好,这种说法合理吗? 吃香蕉是否会让心情好起来呢? 吃香蕉真的心情好吗??~~ 吃香蕉心情会好吗? 吃香蕉能让人心情变好,还能减轻疼痛? 吃香蕉可以把心情变好吗? 想在淘宝里面买东西 需要办个网银吗 办好了怎么买里面的东西 请问淘宝支付需要开通网银吗 银行卡在淘宝网买东西需要开通网银吗 使用淘宝必须需要开通网银吗 在淘宝购物一定要开通网银吗? 栀子花冬天换盆了叶子蔫了干了 栀子花叶子都干了 怎么回事 会死吗 冬天盆栽栀子花焉了&#xF236;&#xFE0F;补救措施吗? 冬天栀子花叶子蔫是怎么回事 北方冬天打苞的栀子花叶子发蔫怎么办 为什么冬天盆栽栀子花叶子都是焉了 养的栀子花在冬天都枯萎了,还能活吗?怎么处理 栀子花冬天叶子和嫩枝蔫了该怎么办 淘宝首页怎么装修 我最近在研究安卓UI界面开发,哪位大神给我推荐一些书籍或者API文档可否??? 怎样看待天赋跟基因?天赋和基因会有什么关系呢? 天赋与天分有区别吗? 我有文件要寄到美国 找什么快递公司好 什么快递可靠 天赋和基因有没有关系,人的智商一开始就决定好了? 科学研究中「天赋」和「后天训练」哪个更重要? “天赋”与“天份”有何区分? 天赋和努力在一个人的发展中孰轻孰重? 寄文件到美国可不可以寄? 在艺术方面,天赋与努力哪个更重要? 怎么寄文件到美国,加拿大等北美国家 什么是天赋与才华? 对于运动员,天赋和努力哪个更重要? 天赋和禀赋的区别 ppt课件在平板上怎样才不变形 办理去韩国结婚的签证 韩国人信誉不良结婚,配偶签证很难办吗? 您好 请问您知道韩国结婚签证多久能下来吗? 韩国结婚签证一个月了还需要多久才能下来 韩国签证好办吗?