1. 程式人生 > >抽取基類 Activity 和 Fragment

抽取基類 Activity 和 Fragment

效果沒發生變化

程式碼變得更加簡潔

 

以下是程式碼步驟

只需建立兩個類   繼承即可

BaseFragment

package com.example.chouqujilei.base;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

//繼承Fragment

public abstract class BaseFragment extends Fragment {

    //onCreateView 
    //getLayoutId() 是一個方法

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(getLayoutId(),container,false);
    }


    //onViewCreate  
    //再寫其他兩個方法 initView(view); initData();
    //view不要忘寫
        
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        initView(view);
        initData();
    }

    //上面寫出來方法名   下面快捷鍵生成
    
    protected abstract void initData();

    protected abstract void initView(View view);

    protected abstract int getLayoutId();
}

Fragment

package com.example.chouqujilei.fragment;

import android.view.View;

import com.example.chouqujilei.R;
import com.example.chouqujilei.base.BaseFragment;


//1.繼承BaseFragment


public class FragmentThree extends BaseFragment {
    @Override
    protected void initData() {

    }

    @Override
    protected void initView(View view) {

    }

    @Override
    protected int getLayoutId() {

    // 2.直接獲取佈局
        return R.layout.fragment_03;
    }
}

BaseActivity 

package com.example.chouqujilei.base;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

//繼承AppCompatActivity

public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //寫三個方法

        setContentView(getLayoutId());
        initView();
        initData();
    }

    //下面自動生成

    protected abstract void initData();

    protected abstract void initView();

    protected abstract int getLayoutId();
}

Activity

package com.example.d14;

import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RadioGroup;

import com.example.d14.base.BaseActivity;
import com.example.d14.fragment.FragmentA;
import com.example.d14.fragment.FragmentB;
import com.example.d14.fragment.FragmentC;

//繼承BaseActivity

public class MainActivity extends BaseActivity {


    private RadioGroup group;
    private FrameLayout frag;
    private FragmentA fragmentA;
    private FragmentB fragmentB;
    private FragmentC fragmentC;
    private FragmentTransaction fragmentTransaction;


    //寫方法

    @Override
    protected void initData() {

        //寫監聽   點選切換  隱藏
        
        group.check(group.getChildAt(0).getId());
        
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentTransaction fragmentTransaction1 = getSupportFragmentManager().beginTransaction();
                switch (checkedId){
                    case R.id.but1:
                        fragmentTransaction1.show(fragmentA).hide(fragmentB).hide(fragmentC);
                        break;
                    case R.id.but2:
                        fragmentTransaction1.show(fragmentB).hide(fragmentA).hide(fragmentC);
                        break;
                    case R.id.but3:
                        fragmentTransaction1.show(fragmentC).hide(fragmentB).hide(fragmentA);
                        break;
                }
                fragmentTransaction1.commit();
            }
        });
    }
    
    //2.得到id 

    @Override
    protected void initView() {

        group = findViewById(R.id.group);
        frag = findViewById(R.id.frag);

        //得到fragment
        
        fragmentA = new FragmentA();
        fragmentB = new FragmentB();
        fragmentC = new FragmentC();

        //得到管理  開啟事務
        
        fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.frag,fragmentA);
        fragmentTransaction.add(R.id.frag,fragmentB);
        fragmentTransaction.add(R.id.frag,fragmentC);

        //預設展示A 隱藏BC
        
        fragmentTransaction.show(fragmentA).hide(fragmentB).hide(fragmentC).commit();

        //調取方法
            
        initData();
    }

    //1.獲取佈局

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }
}