简介
碎片(Fragment)是一种可以嵌入在活动中的UI片段,它让程序更加合理充分利用大屏幕空间
碎片的使用方式
1.引入布局
新建左右两个LinearLayout水平布局的xml,在main.xml中采用<fragment>标签中的name,全包引入
android:name="com.example.fragmenttest.LeftFragment"
2.动态添加碎片
2.1 额外准备一个布局xml,同时新建java类
public class AnotherRightFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.another_right_fragment, container, false);
return view;
}
}
2.2 主活动类修改
public class MainActivity extends AppCompatActivity {
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
replaceFrament(new RightFragment());
findViewById(R.id.button).setOnClickListener(view -> replaceFrament(new AnotherRightFragment()));
}
private void replaceFrament(Fragment fragment){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.right_layout,fragment);
transaction.commit();
}
}
2.3 注意点
getSupportFragmentManager()获取到FragmentManager,再.beginTransaction()获取到FragmentTransaction
在transaction中进行替换布局,同时做修改提交
3.碎片中模拟返回栈
transaction.addToBackStack(null);
//添加完这个,按Back键不推出程序,返回上次的RightFragment界面
4.碎片和活动之间进行通信
FragmentManager fragmentManager = getSupportFragmentManager();
RightFragment fragmentById = (RightFragment)fragmentManager.findFragmentById(R.id.left_fragment);
//在碎片的java类中
MainActivity activity = (MainActivity)getActivity();
屏幕分辨率方向
简易版的新闻应用
1.增加依赖androidx.recyclerview
2.新建news实体类(title、content)
3.新闻内容的布局RelativeLayout(标题和内容,分割线)
4.新闻内容碎片类继承Fragment(重写onCreateView,新加刷新的方法)
5.单页模式创建新闻内容布局文件xml(<fragment>)
6.新闻活动代码继承AppCompatActivity(actionStart)
7.单页的标题展示的布局文件下xml(RecyclerView)
8.RecyclerView下的子项news_item.xml
9.NewsTitleFragment继承Fragment(在onActivityCreated中判断单双页模式)
10.主的xml中使用<fragment>
11.新建layout-sw600dp文件夹,新建activity_main.xml文件
12.在NewsTitleFragment中新建NewsAdapter(onCreateViewHolder方法中注册点击事件)
13.初始化数据,设置view的布局管理、适配器
正向加载的顺序为:MainActivity-->activity_main.xml-->
fragment
1.NewsTitleFragment(news_title_recycler_view-->(title_item单项绑定)+点击刷新内容或重新开启新的活动(使用到newsContentFragment.refresh和NewsContentActivity.actionStart))
FrameLayout
2.NewsContentFragment(news_content_frag视图和新增刷新方法)
标签:xml,transaction,Fragment,碎片,fragment,探究,Android,view
From: https://www.cnblogs.com/zybao/p/16901156.html