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.