Passa ai contenuti principali

Android Studio - Creare OptionMenu diversi in due Activity diverse

In questo articolo vedremo come creare OptionMenu diversi in due Activity diverse e nella seconda Activity il pulsante per tornare all'Activity principale.

Dopo aver creato una seconda Activity creiamo il menu specifico per questo layout come abbiamo visto in questo articolo modificando però il nome del file del menu ad esempio: menu_second.
Il risultato sarà un file che si chiama menu_second.xml al'interno della cartella menu
Ecco come si presenta il file menu_second.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_el1"
android:orderInCategory="100"
android:title="@string/menu2_element1"
app:showAsAction="never" />
<item
android:id="@+id/action_el2"
android:orderInCategory="101"
android:title="@string/menu2_element2"
app:showAsAction="never" />
</menu>
view raw menu_second.xml hosted with ❤ by GitHub
Ecco come si presenta il file menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_el1"
android:orderInCategory="100"
android:title="@string/menu_element1"
app:showAsAction="never" />
<item
android:id="@+id/action_el2"
android:orderInCategory="101"
android:title="@string/menu_element2"
app:showAsAction="never" />
<item
android:id="@+id/action_el3"
android:orderInCategory="102"
android:title="@string/menu_element3"
app:showAsAction="never" />
</menu>
view raw main_menu2.xml hosted with ❤ by GitHub
Una volta creato i menù occorre abilitarli all'interno del codice, quindi all'interno del file MainActivity.kt occorre inserire queste righe di codice dopo la funzione onCreate():
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inserisce il menu, questo aggiunge gli elementi del menu nell'ActionBar se presente
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
view raw menu1.kt hosted with ❤ by GitHub
Con l'aggiunta di queste righe di codice è sufficiente per poter visualizzare il menù ma non per poter interagire con esso.
Per poter interagire con i vari elementi del menù occorre inserire queste righe di codice:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_el1 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
}
R.id.action_el2 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
}
R.id.action_el3 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
}
else -> super.onOptionsItemSelected(item)
}
return true
}
view raw menu7.kt hosted with ❤ by GitHub
Ora passiamo al file SecondActivity.kt dove dobbiamo abilitare il tasto per tornare all'Activity principale inserendo queste righe di codice all'interno della funzione onCreate():
//Actionbar per tornare indietro
val actionbar = supportActionBar
//Impostazione titolo dell'ActionBar
actionbar!!.title = resources.getString(R.string.app_name)
//attivazione del tasto Indietro nell'ActionBar
actionbar.setDisplayHomeAsUpEnabled(true)
e abilitare anche l'OptionMenu in questo modo:
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inserisce il menu, questo aggiunge gli elementi del menu nell'ActionBar se presente
menuInflater.inflate(R.menu.menu_second, menu)
return true
}
view raw menu8.kt hosted with ❤ by GitHub
Ora la differenza sta nel gestire sia il pulsante per tornare indietro sia le varie voci dell'OptionMenu e bisogna procedere in questo modo inserendo questa funzione:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home->{
/*android.R.id.home fa riferimento al pulsante indietro
dichiarato con actionbar.setDisplayHomeAsUpEnabled(true)*/
//questo permette di gestire il pulsante per tornare indietro
onBackPressed()
return true
}
R.id.action_el1 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
}
R.id.action_el2 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
}
else -> super.onOptionsItemSelected(item)
}
return true
}
view raw menu9.kt hosted with ❤ by GitHub
Ecco come si presenta il file MainActivity.kt
package com.dm.tutorialactionbar3
import android.content.Intent //importazione della Classe: Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu //importazione della Classe: Menu
import android.view.MenuItem //importazione della Classe: MenuItem
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
//dichiarazione della variabile apriPaginaDue e associazione della classe Intent
//(this, nome della seconda Activity::class.java)
val apriPaginaDue = Intent(this, SecondActivity::class.java)
//avvio dell'Activity con passaggio della variabile apriPaginaDue
startActivity(apriPaginaDue)
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inserisce il menu, questo aggiunge gli elementi del menu nell'ActionBar se presente
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.action_el1 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
Toast.makeText(this, "Hai premuto elemento 1", Toast.LENGTH_SHORT).show()
}
R.id.action_el2 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
Toast.makeText(this, "Hai premuto elemento 2", Toast.LENGTH_SHORT).show()
}
R.id.action_el3 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
Toast.makeText(this, "Hai premuto elemento 3", Toast.LENGTH_SHORT).show()
}
else -> super.onOptionsItemSelected(item)
}
return true
}
}
Ecco come si presenta il file SecondActivity.kt
package com.dm.tutorialactionbar3
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu //importazione della Classe: Menu
import android.view.MenuItem //importazione della Classe: MenuItem
import android.widget.Toast
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
//Actionbar per tornare indietro
val actionbar = supportActionBar
//Impostazione titolo dell'ActionBar
actionbar!!.title = resources.getString(R.string.app_name)
//attivazione del tasto Indietro nell'ActionBar
actionbar.setDisplayHomeAsUpEnabled(true)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inserisce il menu, questo aggiunge gli elementi del menu nell'ActionBar se presente
menuInflater.inflate(R.menu.menu_second, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home->{
onBackPressed()
return true
}
R.id.action_el1 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
Toast.makeText(this, "Hai premuto elemento 1 Activity 2", Toast.LENGTH_SHORT).show()
}
R.id.action_el2 ->{
//inserire qui il codice che deve essere eseguito toccando questo elemento di menu
Toast.makeText(this, "Hai premuto elemento 2 Activity 2", Toast.LENGTH_SHORT).show()
}
else -> super.onOptionsItemSelected(item)
}
return true
}
}



Download Project
Download file APK


Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main...

Android Studio - Rinominare il progetto

Rinominare il progetto Android Studio ATTENZIONE!: non eseguire questa procedura se l'app è stata pubblicata su Google Play Store Quando si vuole cambiare nome al progetto: nome cartella in cui è contenuto il progetto package name bisogna eseguire questi passaggi: Andare nella cartella dove è contenuto il progetto Creare una copia del progetto in questione Rinominare la cartella copiata con il nome dell'app (non usare spazi tra le parole) Ora è necessario dire ad Android Studio il nome del nuovo progetto  Aprire Android Studio Aprire il progetto creato in precedenza Una volta caricato il progetto cliccare Build Cliccare Clean Project Attendere che venga eseguito il processo di "pulitura" Cliccare ancora su Build Cliccare su Rebuild Project Attendere che venga ricostruito il progetto Ora aprire la cartella app fino a visualizzare la cartella java Cliccare sull'ingranaggio  Deselezionare la voce Compact Middle Packa...

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.