19

Sherlock ActionBarを使用するのは初めてで、アプリで実行し、アクションバーにアイテムがありますが、クリックしたときにアイテムに何かを実行させる方法がわかりません。これだけです。

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;

私が何を意味するのか理解していただければ幸いです:)

編集

ちょっと私は見つけたこのスレッドから少し助けを借りてそれを動作させました、そして私はいくつかの変更を加えました、そしてここにコードがあります!: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);
    }
}
4

4 に答える 4

23

これを試してください、それは動作します:

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;
}
于 2012-05-18T06:47:51.117 に答える
8

このようなもの(私のアプリの1つから取得)。 この場合のアクティビティは拡張され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;
    }
}

R.id.ACTION_EXIT配置されますres/values/ids.xml

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

[編集]次にこれを試してください(SherlockListActivityを拡張します)。最初に編集を行う必要があります。このコードはSherlockデモからのものです。それらをダウンロードする必要があります。

    @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;
}
于 2012-05-06T17:21:32.967 に答える
2

これもお試しください。

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;
    }
}
于 2012-09-24T21:06:11.817 に答える
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;
}
于 2013-10-10T10:32:37.210 に答える