web-dev-qa-db-de.com

ActionBar Sherlock-Menüelement OnClick

Ich bin neu mit der Sherlock ActionBar und habe es in meiner App laufen lassen, und ich habe ein Element in der Actionbar, aber ich weiß nicht, wie das Element etwas bewirken soll, wenn es angeklickt wird. Alles was ich habe ist dieses.

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;

Ich hoffe du verstehst was ich meine :)

EDIT

Hey, ich habe es mit ein wenig Hilfe von diesem Thread , den ich gefunden habe, und ich habe ein paar Änderungen vorgenommen und hier ist der Code! : 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);
    }
}
19
G'sson

Probieren Sie es aus, es funktioniert:

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;
}
23
Hema

So etwas (aus einer meiner Apps). Die Aktivität erweitert in diesem Fall 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;
    }
}

Der R.id.ACTION_EXIT befindet sich in res/values/ids.xml

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

[EDIT] Versuchen Sie es dann (erweitert SherlockListActivity). Sie müssen zuerst etwas bearbeiten. Dieser Code stammt von den Sherlock-Demos. Sie sollten sie herunterladen.

    @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;
}
8
ernell

Bitte versuchen Sie es auch.

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;
    }
}
2
Andre
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;
}
0
Satheesh