铸造XML的菜单项到微调(ActionBar的应用程序兼容性) [英] Casting a Menu Item in XML to a Spinner (Actionbar appcompat)

查看:244
本文介绍了铸造XML的菜单项到微调(ActionBar的应用程序兼容性)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些麻烦铸造XML的菜单项到微调(动作条COMPAT)。我试了几个选项,像这样的<一个href=\"http://stackoverflow.com/questions/12272104/spinner-as-menuitem-not-initialized-by-findviewbyid\">Spinner如菜单项不findViewById 或添加微调初始化动作条(不导航,但微调=(微调)item.getActionView();不断回来作为空设置新的微调,虽然工作,但是这可能不相关的我的问题。

code:

  @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){        MenuInflater吹气= getMenuInflater();
        inflater.inflate(R.menu.main,菜单);        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);        //微调=(微调)menu.findItem(R.id.category_spinner).getActionView();
        //微调=新的微调(本);        菜单项项= menu.findItem(R.id.category_spinner);
        微调=(微调)item.getActionView();        SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(这一点,R.array.operating_systems,android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(mSpinnerAdapter);
        actionBar.setListNavigationCallbacks(mSpinnerAdapter,mOnNavigationListener);
        mOnNavigationListener =新ActionBar.OnNavigationListener(){            的String [] =字符串getResources()getStringArray(R.array.operating_systems)。            @覆盖
            公共布尔onNavigationItemSelected(INT位置,长的itemId){
                ListContentFragment newFragment =新ListContentFragment();
                FragmentTransaction英尺= getSupportFragmentManager()调用BeginTransaction()。
                ft.replace(R.id.fragment_container,newFragment,串[位置]);
                ft.commit();
                返回true;
            }
        };        返回super.onCreateOptionsMenu(菜单);
    }

我也试过

 菜单项项目= menu.findItem(R.id.category_spinner_item);
    微调=(微调)MenuItemCompat.getActionView(项目);

http://developer.android.com/guide/topics/ UI / actionbar.html#的ActionView还要回来空。

菜单/ main.xml中

 &LT;菜单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
      的xmlns:yourapp =htt​​p://schemas.android.com/apk/res-auto&GT;
    &LT;项目
            机器人:ID =@ + ID / category_spinner
            机器人:showAsAction =ifRoom
            机器人:actionLayout =@布局/ action_sort/&GT;    &LT;项目机器人:ID =@ + ID / action_share
          机器人:图标=@绘制/ ic_action_share
          机器人:标题=@字符串/ action_share
          yourapp:showAsAction =ifRoom/&GT;    &LT;项目机器人:ID =@ + ID / action_settings
          机器人:图标=@绘制/ ic_action_overflow
          机器人:标题=@字符串/ action_settings
          yourapp:showAsAction =总是/&GT;
&所述; /菜单&gt;

布局/ action_short.xml

 &LT;微调的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
         机器人:layout_width =WRAP_CONTENT
         机器人:layout_height =WRAP_CONTENT
         机器人:项=@阵列/ operating_systems/&GT;


解决方案

<一个href=\"http://stackoverflow.com/questions/14286768/getactionview-of-my-menuitem-return-null\">getActionView()我的菜单项返回NULL 回答了一切:


  

getActionView()只工作,如果有一个从一个自定义的actionView
  setActionView。


为什么虽然,我不知道。他们为什么在这个例子这里不 http://developer.android.com/指南/主题/ UI / actionbar.html#的ActionView,谁也不知道。

I'm having some trouble casting a Menu Item in xml to a Spinner (actionbar compat) . I've tried a couple of options, like these Spinner as MenuItem not initialized by findViewById or Adding spinner to ActionBar (not Navigation , but spinner = (Spinner)item.getActionView(); keeps coming back as null. Setting up a new spinner works though, but that's probably not relevant to my problem.

Code:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        //spinner = (Spinner) menu.findItem(R.id.category_spinner).getActionView();
        //spinner = new Spinner(this);

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

        SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.operating_systems,android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(mSpinnerAdapter);
        actionBar.setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener);
        mOnNavigationListener = new ActionBar.OnNavigationListener() {

            String[] strings = getResources().getStringArray(R.array.operating_systems);

            @Override
            public boolean onNavigationItemSelected(int position, long itemId) {
                ListContentFragment newFragment = new ListContentFragment();
                FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                ft.replace(R.id.fragment_container, newFragment, strings[position]);
                ft.commit();
                return true;
            }
        };

        return super.onCreateOptionsMenu(menu);
    }

I also tried

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

http://developer.android.com/guide/topics/ui/actionbar.html#ActionView but also comes back null.

menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >


    <item
            android:id="@+id/category_spinner"
            android:showAsAction="ifRoom"
            android:actionLayout="@layout/action_sort"  />

    <item android:id="@+id/action_share"
          android:icon="@drawable/ic_action_share"
          android:title="@string/action_share"
          yourapp:showAsAction="ifRoom"  />

    <item android:id="@+id/action_settings"
          android:icon="@drawable/ic_action_overflow"
          android:title="@string/action_settings"
          yourapp:showAsAction="always"/>


</menu>

layout/action_short.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:entries="@array/operating_systems" />

解决方案

getActionView() of my MenuItem return null answers it all:

getActionView() only works if there's a custom actionView from setActionView.

Why though, I have No idea. Why they dont in the example here http://developer.android.com/guide/topics/ui/actionbar.html#ActionView , who knows.

这篇关于铸造XML的菜单项到微调(ActionBar的应用程序兼容性)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆