美文网首页1-Android开发知识
MenuItem中使用app:actionLayout(Swit

MenuItem中使用app:actionLayout(Swit

作者: 客舟求简 | 来源:发表于2016-10-30 22:18 被阅读1980次

    使用情况:

    MenuItem中使用了app:actionLayout

    <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="com.example.nfcdemo.MainActivity">
    
        <item
            android:id="@+id/action_open_close_nfc"
            android:orderInCategory="100"
            android:title=""
            app:actionLayout="@layout/menu_switch"
            app:showAsAction="always" /> 
    </menu>
    

    menu_switch对应的布局中包含了一个Switch控件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       >
        <Switch
           android:id="@+id/switchForActionBar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"
           android:text=""
           android:checked="false"
           android:theme="@style/ThemeOverlay.SwitchBar"
           />
    
    </RelativeLayout>
    

    错误原因

    直接使用错误方式(findViewById)获取Switch,导致获取失败,使用时空指针异常

    解决办法

    使用正确的方式(menu-->menuitem-->actionview-->switch)获取Switch

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        MenuItem switchItem = menu.findItem(R.id.action_open_close_nfc);
       mSwitch = (Switch) switchItem.getActionView().findViewById(R.id.switchForActionBar);
        if (mNfcAdapter != null) {
            mSwitch.setChecked(mNfcAdapter.isEnabled());
        }
        return true;
    }
    

    相关文章

      网友评论

        本文标题:MenuItem中使用app:actionLayout(Swit

        本文链接:https://www.haomeiwen.com/subject/zbmuuttx.html