03.06-Fragment知识点

本文详细介绍了Fragment的概念及作用,包括如何通过静态和动态方式加载Fragment,并展示了如何结合ViewPager进行页面切换的具体实现。

03.06-Fragment知识点

1.什么是Fragment?

    Fragment是Android3.0(API level 11)开始引入的新技术。为了提高代码的重用性和改善用户体验,我们将Activity中的UI组件进行分组和模块化管理。这些分组后的UI组件就是Fragment。

2.用Fragment可以解决哪些问题?

    使用Fragment可以在Activity中实现页面的灵活切换;解决页面局部布局问题,通过Fragment设计的布局可以可以灵活的解决不同屏幕分辨率的适配问题,提高程序员的工作效率。

3.Fragment静态加载方法:

    .建立一个Activity和一个Fragment文件;
    .根据具体要求对Fragment.xml进行布局;
    .通过<fragment>标签将Fragment页面放入activity.aml里来。
 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        >
    <fragment
        android:id="@+id/fragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:name="com.example.lenovo.myapplication.TestkFragment"
        />

        <fragment
        android:id="@+id/fragment1"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:name="com.example.lenovo.myapplication.Fragment.Fragment_test1"
        />
    </LinearLayout>
    .静态加载注意点:设置<fragment>标签时注意加上id和name。

4.Fragment动态加载方法:

    .建立一个Activity和两或多个Fragment文件;
    .对Activity.xml文件进行布局。将其分为两部分,固定区域和Fragment滑动区域;

代码如下:
固定区域,如按钮之类的。

 <LinearLayout
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
        <Button
            android:id="@+id/man_btn"
            android:layout_width="100dp"
            android:layout_height="80dp"
            android:text="man"
            android:textSize="20sp"
            />
        <Button
            android:id="@+id/woman_btn"
            android:layout_width="100dp"
            android:layout_height="80dp"
            android:text="woman"
            android:textSize="20sp"
            />
    </LinearLayout>
    Fragment滑动区域
    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
    .在Activity.java中定义Button和Fragment
    ---绑定ID---添加监听---添加点击事件---
    .用FragmentManger、FagmentTransaction方法管理Fragment

代码如下:


public class TianmallActivity extends AppCompatActivity implements View.OnClickListener {

    private Button manbtn;
    private Button womanbtn;
    private manFragment manfragment;
    private womanFragment womanfragment;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tianmall);

        bindID();
    }

    private void bindID() {
        manbtn = findViewById(R.id.man_btn);
        womanbtn = findViewById(R.id.woman_btn);
        //设置监听
        manbtn.setOnClickListener(this);
        womanbtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        FragmentManager manager = getFragmentManager();//创建FragmentManger对象
        FragmentTransaction transaction = manager.beginTransaction();//创建FragmentTransaction对象
        switch (view.getId()) {
            case R.id.man_btn:
                if (manfragment == null) {
                    manfragment = new manFragment();
                }
                transaction.replace(R.id.content, manfragment);
                break;
            case R.id.woman_btn:
                if (womanfragment == null) {
                    womanfragment = new womanFragment();
                }
                transaction.replace(R.id.content, womanfragment);
                break;
            default:
                break;
        }
        transaction.commit();//最后一步一定要提交
    }
}
    .动态加载注意点:使用FragmentTransaction方法最后一定要提交:transaction.commit();

5.使用ViewPager和Fragment结合

    .建立一个Activity、两个或以上Fragment文件和一个Adapter适配器;
    .在Activity.xml文件中使用ViewPager进行页卡切换

代码如下:


    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/menu">

    </android.support.v4.view.ViewPager>
    .注意点:一定要写id和name 
    .配置FragmentAdapter适配器

代码如下:

public class WxAdapter extends FragmentPagerAdapter {
    private List<Fragment> mFragmentlist;
    public WxAdapter(FragmentManager fm,List<Fragment> fragmentList) {
        super(fm);
        this.mFragmentlist=fragmentList;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentlist.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentlist.size();
    }
}
    .Activity.java活动页面代码

代码如下:

public class WxActivity extends AppCompatActivity implements View.OnClickListener {

    private Button newsBtn;
    private Button contactBtn;
    private Button friendBtn;


    private ContactFragment contactFragment;
    private FriendFragment friendFragment;
    private NewsFragment newsFragment;

    private ViewPager viewPager;

    private List<Fragment> fragmentList=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wx);

        bindId();

        newsFragment=new NewsFragment();
        contactFragment=new ContactFragment();
        friendFragment=new FriendFragment();

        fragmentList.add(newsFragment);
        fragmentList.add(contactFragment);
        fragmentList.add(friendFragment);

        //创建适配器
        WxAdapter adapter=new WxAdapter(getSupportFragmentManager(),fragmentList);
        //绑定适配器
        viewPager.setAdapter(adapter);
    }

    private void bindId() {
        newsBtn = findViewById(R.id.News_btn);
        contactBtn = findViewById(R.id.Contact_btn);
        friendBtn = findViewById(R.id.Friend_btn);
        viewPager = findViewById(R.id.vp);

        newsBtn.setOnClickListener(this);
        contactBtn.setOnClickListener(this);
        friendBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

        switch (view.getId()) {
            case R.id.News_btn:
                viewPager.setCurrentItem(0);
                break;
            case R.id.Contact_btn:
                viewPager.setCurrentItem(1);
                break;
            case R.id.Friend_btn:
                viewPager.setCurrentItem(2);
                break;
        }
    }
}
注意:Fragment和Fragment方法一定要引入相同的包。
【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值