首页 > 其他分享 >探究Android碎片Fragment

探究Android碎片Fragment

时间:2022-11-18 09:36:41浏览次数:27  
标签:xml transaction Fragment 碎片 fragment 探究 Android view

简介

碎片(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

相关文章