Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programmatically trigger/click on a MenuItem in Android?

I have these menu items in my menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     tools:context=".MainActivity">      <item android:id="@+id/action_restart" android:title="Restart"         android:orderInCategory="1" />     <item android:id="@+id/action_clear" android:title="Clear"         android:orderInCategory="2" />     <item android:id="@+id/action_update" android:title="Update"         android:orderInCategory="3" />     <item android:id="@+id/action_about" android:title="About"         android:orderInCategory="4" />     <item android:id="@+id/action_try_restart" android:title="Try Restart"         android:orderInCategory="5" /> </menu> 

And I have this in my onOptionsItemSelected method:

@Override public boolean onOptionsItemSelected(MenuItem item) {     // Handle action bar item clicks here. The action bar will     // automatically handle clicks on the Home/Up button, so long     // as you specify a parent activity in AndroidManifest.xml.     int id = item.getItemId();      if (id == R.id.action_restart) {         Toast.makeText(MainActivity.this, "Restart...", Toast.LENGTH_LONG).show();     }      if (id == R.id.action_clear) {         Toast.makeText(MainActivity.this, "Clear...", Toast.LENGTH_LONG).show();     }      if (id == R.id.action_update) {         Toast.makeText(MainActivity.this, "Update...", Toast.LENGTH_LONG).show();     }      if (id == R.id.action_about) {         Toast.makeText(MainActivity.this, "About...", Toast.LENGTH_LONG).show();     }      if(id == R.id.action_try_restart) {         // how to click / trigger the "action_restart" from here?     }      return super.onOptionsItemSelected(item); } 

I have tried with:

MenuItem actionRestart = (MenuItem) findViewById(R.id.action_restart); actionRestart; // 

But actionRestart reference doesn't offer anything like click, trigger, etc.

I'd also like to note that I'm new to Android development and I come from PHP/JavaScript background, so this level of Java OOP is all new to me.

like image 238
Zlatan Omerović Avatar asked May 02 '15 12:05

Zlatan Omerović


2 Answers

Use the method performIdentifierAction, like this:

menu.performIdentifierAction(R.id.action_restart, 0); 
like image 59
Simon Avatar answered Sep 28 '22 00:09

Simon


You should manually call your listener, with required item as parameter.

MenuItem actionRestart = (MenuItem) findViewById(R.id.action_restart); onOptionsItemSelected(actionRestart); 
like image 34
VadymVL Avatar answered Sep 28 '22 00:09

VadymVL