반응형
타입을 정의하기위한 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++
}
반응형
'AOS' 카테고리의 다른 글
(공통) 외부에서 앱실행(계속수정중) (0) | 2020.02.03 |
---|---|
(안드로이드)공유하기 (0) | 2020.01.20 |
(안드로이드) 듀얼심일 경우 처리 (0) | 2020.01.09 |
(안드로이드) permission 확인 간단하게 만들어보기 (0) | 2020.01.08 |
(안드로이드) HttpsURLConnection 그리고 AsyncTask .. (0) | 2020.01.02 |