Android 实现不同Fragment的替换

1.布局文件

 <FrameLayout
            android:id="@+id/container_roots"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"/>

2.主页面

import android.Manifest;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.app.FragmentManager;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.RadioGroup;

import com.xinrui.tvsetting.common.CallbackListener;
import com.xinrui.tvsetting.fragment.NetworkFragment;
import com.xinrui.tvsetting.fragment.RootFragment;
import com.xinrui.tvsetting.fragment.WallPaperFragment;

public class MainActivity extends Activity implements CallbackListener {
    private String TAG = "MainActivity";
    private RadioGroup radioGroup;
    private RootFragment rootFragment;
    private NetworkFragment networkFragment;
    private FragmentManager fragmentManager;
    private WallPaperFragment wallPaperFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        fragmentManager = getFragmentManager();
        initView();
        checkPermission();
    }

    public void initView(){
        radioGroup = (RadioGroup)findViewById(R.id.file_type);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.all_type:
                        setTabSelection(0);
                        break;
                    case R.id.doc_type:
                        setTabSelection(1);
                        break;
                    case R.id.pic_type:
                        break;
                    case R.id.audio_type:
                        break;
                    case R.id.video_type:
                        break;
                }
            }
        });
        setTabSelection(0);
    }

    private void setTabSelection(int index) {
        // 开启一个Fragment事务
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        // 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
        hideFragments(transaction);
        switch (index) {
            case 0:
                if (rootFragment == null) {
                    // 如果MessageFragment为空,则创建一个并添加到界面上
                    rootFragment = new RootFragment();
                    rootFragment.setCallbackListener(this);
                    transaction.add(R.id.container_roots, rootFragment);
                } else {
                    // 如果MessageFragment不为空,则直接将它显示出来
                    transaction.show(rootFragment);
                }
                break;
            case 1:
                if (networkFragment == null) {
                    // 如果MessageFragment为空,则创建一个并添加到界面上
                    networkFragment = new NetworkFragment();
                    transaction.add(R.id.container_roots, networkFragment);
                } else {
                    // 如果MessageFragment不为空,则直接将它显示出来
                    transaction.show(networkFragment);
                }
                break;
            case 2:

                break;
            case 3:

                break;
            case 4:

                break;
            case 5:

                break;
            case 6:
                if (wallPaperFragment == null) {
                    // 如果MessageFragment为空,则创建一个并添加到界面上
                    wallPaperFragment = new WallPaperFragment();
                    wallPaperFragment.setCallbackListener(this);
                    transaction.add(R.id.container_roots, wallPaperFragment);
                } else {
                    // 如果MessageFragment不为空,则直接将它显示出来
                    transaction.show(wallPaperFragment);
                }
                break;
            case 7:

                break;
        }
        transaction.commit();
    }

    private void hideFragments(FragmentTransaction transaction) {
        if (rootFragment != null)transaction.hide(rootFragment);
        if (networkFragment != null) transaction.hide(networkFragment);
        if(wallPaperFragment!=null)transaction.hide(wallPaperFragment);
    }

    public void checkPermission() {
        boolean isGranted = true;
        if (android.os.Build.VERSION.SDK_INT >= 23) {
            if (this.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                //如果没有写sd卡权限
                isGranted = false;
            }
            if (this.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                isGranted = false;
            }
            if (this.checkSelfPermission(Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
                isGranted = false;
            }
            if (this.checkSelfPermission(Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) {
                isGranted = false;
            }
            if (this.checkSelfPermission(Manifest.permission.CHANGE_CONFIGURATION) != PackageManager.PERMISSION_GRANTED) {
                isGranted = false;
            }
            if (this.checkSelfPermission(Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED) {
                isGranted = false;
            }
            if (!isGranted) {
                this.requestPermissions(
                        new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission
                                .ACCESS_FINE_LOCATION, Manifest.permission.INTERNET, Manifest.permission.WRITE_SETTINGS,
                                Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CHANGE_CONFIGURATION,
                                Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.VIBRATE
                        }, 102);
                this.requestPermissions(
                        new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission
                                .ACCESS_FINE_LOCATION, Manifest.permission.INTERNET
                        }, 102);
                this.requestPermissions(
                        new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW
                        }, 102);
            }
        }
    }

    @Override
    public void selected_item(int position) {
        setTabSelection(position);
    }
}
发布了262 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_41666295/article/details/105597180