2012-05-06 20 views
19

Soy nuevo en el uso del Sherlock Barra de acciones y tengo que hacer que se ejecute en mi aplicación y tengo un elemento de la barra de acción a, pero no sé cómo hacer que el elemento de hacer algo cuando se hace clic todo lo que tengo es esto.Barra de acciones Sherlock elemento de menú onclick

public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add("Folder") 
     .setIcon(R.drawable.folder) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    return true; 
} 


public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
     //What do i write here? 
    return true; 

espero que entienda lo que quiero decir :)

EDITAR

Hey me hizo trabajar con un poco de ayuda de esta thread que encontré y me hizo algunos cambios y aquí es el codigo! : DDD

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
     case R.id.search: 
      finish(); 
      return true; 
     case R.id.new_folder: 
      finish(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

Respuesta

23

Prueba esto, funciona:

public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
     com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.layout.menu, menu); 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
     case R.id.settings: 
      Intent i=new Intent(class1.this, clas2.class); 
      startActivity(i); 
      return true; 
     } 
     return false; 
} 
+0

onActionItemclick, si no quiero comenzar una actividad nueva pero quiero inflar otra vista, ¿entonces qué tengo que usar? ¿Debo usar Fragment? Implemento Fragmento Pero la vista no está inflada ... así que por favor ayúdenme ... –

8

Algo como esto (tomado de una de mis aplicaciones). La actividad en este caso se extiende a SherlockFragmentActivity.

@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    menu.add(Menu.NONE, R.id.ID_ACTION_EXIT, Menu.NONE,R.string.action_label_exit) 
    .setIcon(android.R.drawable.ic_menu_close_clear_cancel) 
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(
     com.actionbarsherlock.view.MenuItem item) { 
    switch(item.getItemId()){ 
    case R.id.ID_ACTION_EXIT: 
     Main.this.finish(); 
     return true; 
    default: 
     return false; 
    } 
} 

El R.id.ACTION_EXIT se coloca en res/values/ids.xml

<resources><item name="ID_ACTION_EXIT" type="id"/></resources> 

[EDIT] Prueba esto entonces (se extiende SherlockListActivity). Tienes que hacer algo de edición primero. Este código proviene de las demostraciones de Sherlock. Debes descargarlos.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    SubMenu sub = menu.addSubMenu("Theme"); 
    sub.add(0, R.style.Theme_Sherlock, 0, "Default"); 
    sub.add(0, R.style.Theme_Sherlock_Light, 0, "Light"); 
    sub.add(0, R.style.Theme_Sherlock_Light_DarkActionBar, 0, "Light (Dark Action Bar)"); 
    sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home || item.getItemId() == 0) { 
     return false; 
    } 
    THEME = item.getItemId(); 
    Toast.makeText(this, "Theme changed to \"" + item.getTitle() + "\"", Toast.LENGTH_SHORT).show(); 
    return true; 
} 
+0

lo probé pero no pasa nada –

+0

La última publicación se editó con otro ejemplo. – ernell

+0

Lo arreglé. el código está en la pregunta :) –

2

Por favor, intente esto también.

import android.os.Bundle; 
import android.widget.Toast; 

import com.actionbarsherlock.app.SherlockActivity; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 

public class ActionBarTestActivity extends SherlockActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_action_bar_test); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 

     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.activity_action_bar_test, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     super.onOptionsItemSelected(item); 

     switch (item.getItemId()) { 
     case R.id.phone: 
      Toast.makeText(getBaseContext(), "You selected Phone", 
        Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.computer: 
      Toast.makeText(getBaseContext(), "You selected Computer", 
        Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.gamepad: 
      Toast.makeText(getBaseContext(), "You selected Gamepad", 
        Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.camera: 
      Toast.makeText(getBaseContext(), "You selected Camera", 
        Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.video: 
      Toast.makeText(getBaseContext(), "You selected Video", 
        Toast.LENGTH_SHORT).show(); 
      break; 

     case R.id.email: 
      Toast.makeText(getBaseContext(), "You selected EMail", 
        Toast.LENGTH_SHORT).show(); 
      break; 

     } 
     return true; 
    } 
} 
+0

onActionItemhaga clic, si quiero inflar otra vista, entonces ¿qué tengo que usar? ¿Debo usar Fragment? Implemento Fragmento Pero la vista no está inflada ... así que por favor ayúdenme. –

0
You use this one 

public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
     getSherlockActivity().getSupportMenuInflater().inflate(R.menu.settingmenu, menu); 
    getSherlockActivity().getSupportMenuInflater().inflate(R.menu.menugridcalendar,me 
} 

This will be added in your sherlockfragment activity: 


public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.settings: 
      Intent intent=new Intent(currentclass.this, calledclass.class); 
      startActivity(intent); 
      return true; 
     } 
     return false; 
} 
Cuestiones relacionadas