Context menu appaiono quando si mantiene il tocco per qualche istante sull’oggetto con cui si vuole interagire e consentono all’utente di selezionare più elementi per eseguire alcune azioni rapide all’interno di un’applicazione.
Andiamo a creare un file activity_main.xml:
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:id=”@+id/linearLayout”
android:gravity=”center”>
<TextView
android:text=”@string/hello_world”
android:id=”@+id/textView”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</LinearLayout>
Andiamo a definire un file XML all’interno della cartella res/menu( context):
<menu xmlns:android=”http://schemas.android.com/apk/res/android”>
<item
android:id=”@+id/MENU_1″
android:title=”Data e Ora”/>
<item
android:id=”@+id/MENU_2″
android:title=”Accessibilita’”/>
<item
android:id=”@+id/MENU_3″
android:title=”Account “/>
<item
android:id=”@+id/MENU_4″
android:title=”Connessione”/>
<item
android:id=”@+id/MENU_5″
android:title=”Apn “/>
<item
android:id=”@+id/MENU_6″
android:title=”Batteria “/>
<item
android:id=”@+id/MENU_7″
android:title=”Informazioni “/>
<item
android:id=”@+id/MENU_8″
android:title=”Cerca”/>
</menu>
Adesso andiamo a lavorare con il file MainActivity.java aggiungendo il codice per visualizzare ContextMenu. Ogni volta che l’app si avvia, facendo un lungo clic sul testo “Hello world!” viene visualizzato il menu con le opzioni che abbiamo inserito nel file context.XML:
package com.mycompany.myapp2;
import android.app.*;
import android.os.*;
import android.view.*;
import android.content.*;
import android.provider.*;
import android.widget.*;
import android.view.ContextMenu.*;
public class MainActivity extends Activity
{
TextView textView;
LinearLayout linearLayout;
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context, menu);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = findViewById(R.id.textView);
linearLayout = findViewById(R.id.linearLayout);
registerForContextMenu(textView);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
int id=item.getItemId();
switch(id)
{
case R.id.MENU_1:
if (item.getItemId()==R.id.MENU_1) {
startActivity(new Intent(Settings.ACTION_DATE_SETTINGS));
}
return true;
case R.id.MENU_2:
if (item.getItemId()==R.id.MENU_2) {
startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS));
}
return true;
case R.id.MENU_3:
if (item.getItemId()==R.id.MENU_3) {
startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
}
return true;
case R.id.MENU_4:
if (item.getItemId()==R.id.MENU_4) {
startActivity(new Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS));
}
return true;
case R.id.MENU_5:
if (item.getItemId()==R.id.MENU_5) {
startActivity(new Intent(Settings.ACTION_APN_SETTINGS));
}
return true;
case R.id.MENU_6:
if (item.getItemId()==R.id.MENU_6) {
startActivity(new Intent(Settings.ACTION_BATTERY_SAVER_SETTINGS));
}
return true;
case R.id.MENU_7:
if (item.getItemId()==R.id.MENU_7) {
startActivity(new Intent(Settings.ACTION_APPLICATION_SETTINGS));
}
return true;
case R.id.MENU_8:
if (item.getItemId()==R.id.MENU_8) {
startActivity(new Intent(Settings.ACTION_APP_SEARCH_SETTINGS));
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}