zsmb13 / MaterialDrawerKt

A Kotlin DSL wrapper around the mikepenz/MaterialDrawer library.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add the same drawer to multiple activities

phfrc opened this issue · comments

Hello y'all,

I would like to add the drawer currently in MainActivity to Activities which are collapsable items. But I can't seem to find any tips on the web, should I do this by inheritance, if so, how or should I do this with fragments, and if so could you give me an example?

This is MainActivity :

class MainActivity : AppCompatActivity() {
    private lateinit var result: Drawer
    private lateinit var headerResult: AccountHeader

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

        result = drawer {
            toolbar = this@MainActivity.toolbar
            hasStableIds = true
            savedInstance = savedInstanceState
            showOnFirstLaunch = true

            headerResult = accountHeader {
                savedInstance = savedInstanceState
                translucentStatusBar = true



                    profile("CampusID", "email@campusid.eu") {
                        iconUrl = "https://avatars3.githubusercontent.com/u/887462?v=3&s=460"
                        identifier = 101

                    }
            }
            sectionHeader("CampusiD"){
                divider= false
            }


            expandableItem("Mes infos") {
               // iicon = MaterialDesignIconic.Icon.gmi_collection_case_play
                identifier = 19
                selectable = false
                secondaryItem("Planning") {
                    level = 2
                    identifier = 2002
                    selectable = false
                    onClick(openActivity(PlanningActivity::class) )
                }
                secondaryItem("Relevés de notes") {
                    level = 2
                    identifier = 2003
                    selectable = false
                    onClick(openActivity(NotesActivity::class) )
                }

                secondaryItem("Trombinoscope") {
                    level = 2
                    identifier = 2004
                    selectable = false
                    onClick(openActivity(TrombinoscopeActivity::class) )
                }

                secondaryItem("Messages") {
                    level = 2
                    identifier = 2005
                    selectable = false
                    onClick(openActivity(MessagesActivity::class) )
                }
            }

            divider()

            expandableItem("Vie Etudiante") {
                // iicon = MaterialDesignIconic.Icon.gmi_collection_case_play
                identifier = 20
                selectable = false
                secondaryItem("Offres de stage") {
                    level = 2
                    identifier = 2006
                    selectable = false
                    onClick(openActivity(StagesActivity::class) )
                }
                secondaryItem("Petites Annonces") {
                    level = 2
                    identifier = 2007
                    selectable = false
                    onClick(openActivity(AnnoncesActivity::class) )
                }

                secondaryItem("Messages globaux") {
                    level = 2
                    identifier = 2008
                    selectable = false
                    onClick(openActivity(MessagesGlobauxActivity::class) )
                }
            }

            divider()

            expandableItem("Demandes Administratives") {
                // iicon = MaterialDesignIconic.Icon.gmi_collection_case_play
                identifier = 21
                selectable = false
                secondaryItem("Convention de stage") {
                    level = 2
                    identifier = 2009
                    selectable = false
                    onClick(openActivity(ConventionStageActivity::class) )
                }
                secondaryItem("Certificat de scolarité") {
                    level = 2
                    identifier = 2010
                    selectable = false
                    onClick(openActivity(CertificatScolariteActivity::class) )
                }
            }

            divider()

            primaryItem("Paramètres"){
                onClick(openActivity(ParametresActivity::class) )
            }

            divider()

            primaryItem("Contact") {
                onClick(openActivity(ContactActivity::class))
            }

            divider()
        }
    }

    private fun <T : Activity> openActivity(activity: KClass<T>): (View?) -> Boolean = {
        startActivity(Intent(this@MainActivity, activity.java))
        false
    }

    override fun onSaveInstanceState(outState: Bundle) {
        result.saveInstanceState(outState)
        headerResult.saveInstanceState(outState)
        super.onSaveInstanceState(outState)
    }

    override fun onBackPressed() {
        if (result.isDrawerOpen)
            result.closeDrawer()
        else
            super.onBackPressed()
    }

}

This is an example of a sub-activity :

class PlanningActivity : AppCompatActivity() {

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

Thanking you in advance.