Files
assistant-android/app/src/main/java/com/gh/gamecenter/ShellActivity.kt

72 lines
2.7 KiB
Kotlin

package com.gh.gamecenter
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
import com.gh.gamecenter.common.base.ToolBarActivity
import com.gh.gamecenter.common.base.fragment.BaseFragment
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.amway.AmwaySuccessFragment
import com.halo.assistant.fragment.SwitchInstallMethodFragment
import com.halo.assistant.fragment.user.ManuallyRealNameFragment
import com.halo.assistant.fragment.user.RealNameInfoFragment
/**
* ShellActivity 用来包裹那些几乎没有交互且运营也不会想要知道页面访问量的静态 fragment (如安利墙的评论提交成功页面)
*/
class ShellActivity : ToolBarActivity() {
private lateinit var mFragment: BaseFragment<Any>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) handleIntent(intent.extras)
}
private fun handleIntent(bundle: Bundle?) {
// We parse the bundle to fragment to let fragment get data from bundle itself to survive configuration changes.
val intentType = Type.fromString(bundle?.getString(INTENT_TYPE) ?: "")
when (intentType) {
Type.AMWAY_SUCCESS -> startFragment(AmwaySuccessFragment().with(bundle))
Type.SWITCH_INSTALL_METHOD -> startFragment(SwitchInstallMethodFragment())
Type.REAL_NAME_INFO -> startFragment(RealNameInfoFragment().with(bundle))
Type.MANUALLY_REAL_NAME -> startFragment(ManuallyRealNameFragment().with(bundle?.getBundle(EntranceConsts.KEY_DATA)))
}
}
override fun getLayoutId() = R.layout.activity_shell
private fun startFragment(fragment: BaseFragment<Any>) {
mFragment = fragment
supportFragmentManager.beginTransaction().replace(R.id.placeholder, fragment).commitAllowingStateLoss()
}
companion object {
const val INTENT_TYPE = "intent_type"
@JvmStatic
fun getIntent(context: Context, type: Type, extraParcelable: Parcelable? = null): Intent {
val intent = Intent(context, ShellActivity::class.java)
intent.putExtra(INTENT_TYPE, type.value)
intent.putExtra(EntranceConsts.KEY_DATA, extraParcelable)
return intent
}
}
enum class Type(val value: String) {
AMWAY_SUCCESS("amway_success"),
SWITCH_INSTALL_METHOD("switch_install_method"),
REAL_NAME_INFO("real_name_info"),
MANUALLY_REAL_NAME("manually_real_name");
companion object {
fun fromString(typeString: String): Type {
return values().find { typeString == it.value } ?: AMWAY_SUCCESS
}
}
}
}