oligazar
11/4/2017 - 9:22 PM

Basic Activity

class OfferDetailActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_container)
        if (savedInstanceState == null) {
            supportFragmentManager.inTransaction {
                add(R.id.content, OfferDetailFragment.newInstance(intent.extras))
            }
        }
    }

    override fun supportShouldUpRecreateTask(targetIntent: Intent) = true

    override fun onPrepareSupportNavigateUpTaskStack(builder: TaskStackBuilder) {
        Log.d("OfferDetailActivity", "onPrepareSupportNavigateUpTaskStack")
        // Todo: think hoe to make things easier
        val bundle = intent.extras.getBundle(MASTER_BUNDLE_EXTRA) ?: return
        val catKey = bundle.getString(OffersMasterActivity.CAT_KEY_EXTRA)
        val catName = bundle.getString(OffersMasterActivity.CAT_NAME_EXTRA)
        val picPath = bundle.getString(OffersMasterActivity.CAT_PICPATH_EXTRA)
        Log.d("OfferDetailActivity", "key: $catKey, name: $catName, pic: $picPath")
        builder.editIntentAt(builder.intentCount -1)?.apply {
            putExtra(OffersMasterActivity.CAT_KEY_EXTRA, catKey)
            putExtra(OffersMasterActivity.CAT_NAME_EXTRA, catName)
            putExtra(OffersMasterActivity.CAT_PICPATH_EXTRA, picPath)
        }
    }

    companion object {

        val CAT_PICPATH_EXTRA = "categoryPicPathExtra"
        val MASTER_KEY_EXTRA = "masterKeyExtra"
        val MASTER_NAME_EXTRA = "masterNameExtra"
        val MASTER_BUNDLE_EXTRA = "masterBundleExtra"

        fun launch(activity: Activity, catPicPath: String, masterKey: String, masterName: String, arguments: Bundle?) {
            val intent = Intent(activity, OfferDetailActivity::class.java)
            intent.putExtra(CAT_PICPATH_EXTRA, catPicPath)
            intent.putExtra(MASTER_KEY_EXTRA, masterKey)
            intent.putExtra(MASTER_NAME_EXTRA, masterName)
            intent.putExtra(MASTER_BUNDLE_EXTRA, arguments)
            activity.startActivity(intent)
        }
    }
}