我如何将微调器添加到特定的工具栏 fragment.Can 谁能告诉我该怎么做?

How can i add spinner to the toolbar in the particular fragment.Can anyone tell me how can i do this?

这是我的 onActivityCreated() 方法:

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {       
        setHasOptionsMenu(true);
        super.onActivityCreated(savedInstanceState);
    }

这是我给微调器充气并设置适配器时的 onCreateOptionsMenu() 方法:

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu, menu);
        MenuItem menuItem = menu.findItem(R.id.menu_spinner);
        mCountrySpinner = (Spinner) MenuItemCompat.getActionView(menuItem);

        ArrayAdapter<String> countryAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, mCountryList);
                countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mCountrySpinner.setAdapter(countryAdapter);
        super.onCreateOptionsMenu(menu, inflater);
     }

这是我的菜单 xml,我在其中添加了项目并将 app:actionViewClass 设置为 android.widget.Spinner:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".activity.MainActivity">

这是我在菜单中添加的项目xml:

<item
    android:id="@+id/menu_spinner"
    android:background="#ff00"
    android:title="@string/countryname"
    app:actionViewClass="android.widget.Spinner"
    app:showAsAction="always"></item>
</menu>

在菜单中创建 fragment_menu.xml 并添加以下代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/spinner"
        android:title="ActionBar Spinner"
        app:actionViewClass="android.widget.Spinner"
        android:background="#ff00"
        app:showAsAction="always" />
</menu>

覆盖fragment的onCreateOptionsMenu方法并添加以下代码:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.fragment_menu, menu);

        MenuItem item = menu.findItem(R.id.spinner);
        Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.spinner_list_item_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);
        return true;
}

希望这能奏效。

在您的片段的 onCreateView() 中 调用这个 setHasOptionsMenu(true) 然后在你的 fragment

中膨胀你的菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.fragment_menu, menu);

    MenuItem item = menu.findItem(R.id.spinner);
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.spinner_list_item_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);
    return true;
}

创建一个名为 fragment_menu 的菜单 xml,并将 spinner 设置为 menuItem 中的 actionView