Android Fragment页面切换显示

MainActivity.java方案一:通过FragmentTransaction.replace反复添加、替换生成控件

public class MainActivity extends AppCompatActivity {
    private ContactFragment contactFragment=new ContactFragment();
    private InternetFragment internetFragment=new InternetFragment();
    private TelephoneFragment telephoneFragment=new TelephoneFragment();
    private FragmentManager manager;
    private FragmentTransaction transaction;
    private Fragment currentFragment;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView title=findViewById(R.id.main_title_tv);
        Button tele=findViewById(R.id.main_btn_tel);
        tele.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               FragmentSwitch(telephoneFragment);
                title.setText("Telephone");
            }
        });
        Button cont=findViewById(R.id.main_btn_con);
        cont.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentSwitch(contactFragment);
                title.setText("Contact");
            }
        });
        Button inte=findViewById(R.id.main_btn_int);
        inte.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentSwitch(internetFragment);
                title.setText("Internet");
            }
        });
    }
    private void FragmentSwitch(Fragment fg) {
        manager=getSupportFragmentManager();
        transaction=manager.beginTransaction();
        transaction.replace(R.id.main_layout_content,fg);
        transaction.commit();
    }
}

MainActivity.java方案二,通过FragmentTransaction.hide(I)、show()方法隐藏和显示进行界面切换与转换

public class MainActivity extends AppCompatActivity {
    private ContactFragment contactFragment=new ContactFragment();
    private InternetFragment internetFragment=new InternetFragment();
    private TelephoneFragment telephoneFragment=new TelephoneFragment();
    private FragmentManager manager;
    private FragmentTransaction transaction;
    private Fragment currentFragment;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView title=findViewById(R.id.main_title_tv);
        Button tele=findViewById(R.id.main_btn_tel);
        tele.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //FragmentSwitch(telephoneFragment);
                FragmentHideShwo(telephoneFragment);
                title.setText("Telephone");
            }
        });
        Button cont=findViewById(R.id.main_btn_con);
        cont.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //FragmentSwitch(contactFragment);
                FragmentHideShwo(contactFragment);
                title.setText("Contact");
            }
        });
        Button inte=findViewById(R.id.main_btn_int);
        inte.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //FragmentSwitch(internetFragment);
                FragmentHideShwo(internetFragment);
                title.setText("Internet");
            }
        });
        //initial fragments
        manager=getSupportFragmentManager();
        transaction=manager.beginTransaction();
        transaction.show(contactFragment);
        transaction.hide(internetFragment);
        transaction.hide(telephoneFragment);
        transaction.commit();
        currentFragment=contactFragment;
    }
    private void FragmentSwitch(Fragment fg) {
        manager=getSupportFragmentManager();
        transaction=manager.beginTransaction();
        transaction.replace(R.id.main_layout_content,fg);
        transaction.commit();
    }
    private void FragmentHideShwo(Fragment fg){
        // show or hide fragments to improve the stablility and reduce costs
        manager=getSupportFragmentManager();
        transaction=manager.beginTransaction();
        if(!fg.isAdded()){
            transaction.hide(currentFragment);
            transaction.add(R.id.main_layout_content,fg);
        }else{
            transaction.hide(currentFragment);
            transaction.show(fg);
        }
        currentFragment=fg;
        transaction.commit();
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值