【问题标题】:ActionBar Sherlock Menu Item OnClickActionBar Sherlock 菜单项 OnClick
【发布时间】:2012-05-15 09:24:27
【问题描述】:

我是使用 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;

希望你明白我的意思:)

编辑

嘿,我在这个thread 的帮助下让它工作了,我做了一些更改,这里是代码! :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);
    }
}

【问题讨论】:

    标签: android menu click actionbarsherlock


    【解决方案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;
    }
    

    【讨论】:

    • 我测试过但没有任何反应
    • @G'sson,如果它解决了您的问题,请确保您检查 emell 的答案作为正确答案。
    【解决方案2】:

    试试这个,它有效:

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

    【讨论】:

    • onActionItemclick,如果我不想开始新的活动,但想扩大另一个视图,那么我必须使用什么?我应该使用片段吗?我实现了 Fragment 但视图没有膨胀..所以请帮助我..
    【解决方案3】:

    请也试试这个。

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

    【讨论】:

    • onActionItemclick,如果我想放大另一个视图,那么我必须使用什么?我应该使用片段吗?我实现了 Fragment 但视图没有膨胀..所以请帮助我。
    【解决方案4】:
    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多