반응형

타입을 정의하기위한 enum class

// Container Activity must implement this interface
enum class FragmentType{
    PERMISSION, COUPON,HOME,LOGIN,SEARCH,SIGNUP
}
​

다른 클래스에도 사용할수있는 interface

interface MainInterface {
    fun onMainInterface(str:String)
    fun onMoveFragment(type: FragmentType ,animate:Boolean = true)
}

 

class MainActivity : AppCompatActivity() ,MainInterface {

    private var counts:Int = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        onMoveFragment(FragmentType.PERMISSION,false)
    }
}

 

    /**
     * @Type: MainInterface
     */
    override fun onMoveFragment(type: FragmentType, animate: Boolean) {
        when (type) {
            FragmentType.HOME -> changeFragment(HomeFragment.newInstance(index = counts),animate)
            FragmentType.COUPON -> changeFragment(CouponFragment.newInstance(index = counts),animate)
            FragmentType.LOGIN -> changeFragment(LoginFragment.newInstance(index = counts),animate)
            FragmentType.SEARCH -> changeFragment(SearchFragment.newInstance(index = counts),animate)
            FragmentType.SIGNUP -> changeFragment(SignupFragment.newInstance(index = counts),animate)
            FragmentType.PERMISSION -> changeFragment(PermissionFragment.newInstance(index = counts),animate)
        }
    }
    private fun changeFragment(f : Fragment, animate:Boolean){
        val fm = supportFragmentManager
        val t = fm.beginTransaction()
        t.replace(R.id.mainFrame, f)
        if (animate)
            t.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right)

        t.addToBackStack(null)
        t.commit()
        counts++
    }

 

반응형

+ Recent posts