Fragment隐藏和显示和抽屉与判断网络

本文介绍了一个基于Android的应用程序中如何实现多个Fragment之间的切换,并通过RadioGroup来控制显示不同的Fragment。文章详细展示了如何创建和管理Fragment,以及如何在Activity中设置监听器以响应选择变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.lbp.demo9;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.lbp.demo9.frag.Fragment1;
import com.lbp.demo9.frag.Fragment2;
import com.lbp.demo9.frag.Fragment3;
import com.lbp.demo9.frag.Fragment4;
import com.lbp.demo9.frag.Fragment5;
import com.lbp.demo9.util.GetNetUtils;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private List<Fragment> listfragment = new ArrayList<>();
    private FragmentManager manager;
    private Fragment1 f1;
    private Fragment2 f2;
    private Fragment3 f3;
    private Fragment4 f4;
    private Fragment5 f5;
    private List<String> list;
    private ListView lv_drawer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getNet();

        initData();
        lv_drawer = (ListView) findViewById(R.id.lv_drawer);
        lv_drawer.setAdapter(new MyAdapter());
        RadioGroup rg = (RadioGroup) findViewById(R.id.rg);
        f1 = new Fragment1();
        manager = getSupportFragmentManager();
        manager.beginTransaction().add(R.id.fl, f1).commit();

        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                hideFragment();
                switch (i){
                    case R.id.rb1:
                        manager.beginTransaction().show(f1).commit();
                        break;
                    case R.id.rb2:
                        if(f2==null){
                            f2 = new Fragment2();
                            manager.beginTransaction().add(R.id.fl,f2).commit();
                        }else{
                            manager.beginTransaction().show(f2).commit();
                        }
                        break;
                    case R.id.rb3:
                        if(f3==null){
                            f3 = new Fragment3();
                            manager.beginTransaction().add(R.id.fl,f3).commit();
                        }else{
                            manager.beginTransaction().show(f3).commit();
                        }
                        break;
                    case R.id.rb4:
                        if(f4==null){
                            f4 = new Fragment4();
                            manager.beginTransaction().add(R.id.fl,f4).commit();
                        }else{
                            manager.beginTransaction().show(f4).commit();
                        }
                        break;
                    case R.id.rb5:
                        if(f5==null){
                            f5 = new Fragment5();
                            manager.beginTransaction().add(R.id.fl,f5).commit();
                        }else{
                            manager.beginTransaction().show(f5).commit();
                        }
                        break;
                }
            }
        });

    }

    public void getNet() {
        int i = GetNetUtils.getnet(MainActivity.this);
        if(i!=-1){
            initTo();
        }
        else {
            Toast.makeText(MainActivity.this,"没有网络请检查",Toast.LENGTH_SHORT).show();
        }

    }

    private void initTo() {
        Toast.makeText(MainActivity.this,"有网请使用",Toast.LENGTH_SHORT).show();
    }

    class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return list.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            if(view==null){
                view = View.inflate(MainActivity.this, R.layout.item, null);
            }
            TextView tv = view.findViewById(R.id.tv);
            tv.setText(list.get(i));
            return view;
        }
    }

    private void initData() {
        list = new ArrayList<>();
        list.add("第一个");
        list.add("第二个");
        list.add("第三个");
        list.add("第四个");
    }

    private void hideFragment() {
        if(f1!=null&&f1.isAdded()){
            getSupportFragmentManager().beginTransaction().hide(f1).commit();
        }
        if(f2!=null&&f2.isAdded()){
            getSupportFragmentManager().beginTransaction().hide(f2).commit();
        }
        if(f3!=null&&f3.isAdded()){
            getSupportFragmentManager().beginTransaction().hide(f3).commit();
        }
        if(f4!=null&&f4.isAdded()){
            getSupportFragmentManager().beginTransaction().hide(f4).commit();
        }
        if(f5!=null&&f5.isAdded()){
            getSupportFragmentManager().beginTransaction().hide(f5).commit();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值