我应该如何访问片段中的操作栏菜单项?我试过这个,但什么都没发生
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.menu_refresh:
        Toast.makeText(getActivity().getApplicationContext(), "clicked", Toast.LENGTH_SHORT).show();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu, inflater);
}
TeR*_*RRo 58
请遵循以下步骤:
在Fragment中添加setHasOptionsMenu(true)方法.
重写onCreateOptionsMenu(菜单菜单,MenuInflater打气筒)和onOptionsItemSelected(菜单项项目)在片段的方法.
里面的onOptionsItemSelected(菜单项项)活动的方法,请确保您返回false,如果菜单项行动将在onOptionsItemSelected(菜单项项)片段的方法来实现.
例:
活动
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.activity_menu_item:
        // Do Activity menu item stuff here
        return true;
    case R.id.fragment_menu_item:
        // Not implemented here
        return false;
    default:
        break;
    }
    return false;
}
分段
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    ....
}
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
    // Do something that differs the Activity's menu here
    super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.activity_menu_item:
        // Not implemented here
        return false;
    case R.id.fragment_menu_item:
        // Do Fragment menu item stuff here
        return true;
    default:
        break;
    }
    return false;
}
您无法直接访问片段中的ActionBar菜单项.你可以做的是把setHasOptionsMenu(true); 在片段类中的onCreateView函数中,这将调用相应活动中的onCreateOptionsMenu(菜单菜单)函数.
在那里,您可以访问操作栏中的所有菜单项.您可以使用:
MenuItem item = menu.getItem(index);
你有一个使用它的例子:
在片段onCreateView类中:
setHasOptionsMenu(true);
在相应的活动类中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    MenuItem item = menu.getItem(0);
    if(condition)
        item.setVisible(true);
    else 
        item.setVisible(false);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    // Handle action bar actions click
    switch (item.getItemId()) {
       case R.id.action_logout:
           makeLogout();
           return  true;
       default :
           return super.onOptionsItemSelected(item);
    }
}
| 归档时间: | 
 | 
| 查看次数: | 34927 次 | 
| 最近记录: |