2012-05-06 109 views
19

我是新来使用Sherlock的ActionBar,我已经使它在我的应用程序中运行,我有一个项目在操作栏上,但我不知道如何使项目做点什么,当它被点击我得到的只是这个。ActionBar Sherlock菜单项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; 

我希望你明白我的意思:)

编辑

嘿我做了一点点帮助,从这个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); 
    } 
} 

回答

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

onActionItemclick,如果我不想开始新的活动,但想膨胀另一个视图,那么我必须使用?我应该使用Fragment吗?我实施片段但是视图不是夸大..所以Plz帮助我.. –

8

类似的东西(取自我的一个应用程序)。 这种情况下的活动延伸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; 
} 
+0

我测试,但没有任何反应 –

+0

最后的帖子是用另一个例子编辑的。 – ernell

+0

我修好了。代码在问题:) –

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

onActionItemclick,如果我想膨胀另一个视图然后我必须使用?我应该使用Fragment吗?我实施片段但是观点没有膨胀..所以Plz帮助我。 –

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