Android:ActionBarCompat(支持库)

时间:2014-01-01 08:29:03

标签: java android android-support-library

我有一个问题。 我正在为我的应用程序使用支持库。 我通过XML文件在ActionBar上添加了一些Action项。

来自docs: https://developer.android.com/guide/topics/ui/actionbar.html#ActionItems

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom|collapseActionView"  />
    ...
</menu>

有效。但该项目保留在所有碎片上。

我需要在ActionBar中使用不同的操作项。

我创建了一些菜单文件并尝试在不同的部分使用它们,但它不起作用。

我只看到类中的第一个Action项扩展了ActionBarActivity。

来自片段:

public class Foods extends Fragment implements View.OnClickListener, SearchView.OnQueryTextListener 
...
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
    {
            inflater.inflate(R.menu.showinfo_menu, menu);
            MenuItem searchItem = menu.findItem(R.id.action_search);
            SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
            // Configure the search info and add any event listeners
            searchView.setQueryHint(getResources().getString(R.string.search));
            searchView.setOnQueryTextListener(this);
            super.onCreateOptionsMenu(menu, inflater);
    }

1 个答案:

答案 0 :(得分:0)

我刚刚发现了我的错误。

如果你想让ActionBar的碎片项有效,你应该添加它: http://developer.android.com/reference/android/app/Fragment.html#setHasOptionsMenu(boolean)

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        setHasOptionsMenu(true);
        super.onCreate(savedInstanceState);
...