首页 > 解决方案 > 如何将片段加载到我的 SlidingPaneLayout 菜单中?

问题描述

我是新手,请多多包涵。我已经在我的应用程序中实现了一个 SlidingPaneLayout。但是,在我遵循的示例中,它用字符串数组填充了菜单片段。我认为这只是一个例子。如何使用指向我希望让用户访问的片段的链接填充菜单片段?

我有一个menu包含我想显示的片段名称的列表,但它似乎没有被实现。

这是我的菜单片段中的代码:

public class MainListFragment extends ListFragment {

    private ArrayAdapter<String> mAdapter;

    public static final String[] items = { "Item 1: xxxxxxxxxxxxxxxxx",
            "Item 2: xxxxxxxxxxxxxxxxx", "Item 3: xxxxxxxxxxxxxxxxx",
            "Item 4: xxxxxxxxxxxxxxxxx", "Item 5: xxxxxxxxxxxxxxxxx",
            "Item 6: xxxxxxxxxxxxxxxxx", "Item 7: xxxxxxxxxxxxxxxxx" };

    ListFragmentItemClickListener iItemClickListener;

    /** An interface for defining the callback method */
    public interface ListFragmentItemClickListener {
        /**
         * This method will be invoked when an item in the ListFragment is
         * clicked
         */
        void onListFragmentItemClick(View view, int position);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        mAdapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, items);
        setListAdapter(mAdapter);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        setHasOptionsMenu(true);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    /** A callback function, executed when this fragment is attached to an activity */
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try{
            /** This statement ensures that the hosting activity implements ListFragmentItemClickListener */
            iItemClickListener = (ListFragmentItemClickListener) activity;
        } catch(Exception e) {
            Toast.makeText(activity.getBaseContext(),"Exception", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.main_list, menu);
    }

    @Override
    public void onListItemClick(ListView list, View view, int position, long id) {

        /**
         * Invokes the implementation of the method onListFragmentItemClick in
         * the hosting activity
         */
        iItemClickListener.onListFragmentItemClick(view, position);

    }

}

这是menu列表中的代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_ehr"
            android:title="@string/ehr_short" />
        <item
            android:id="@+id/nav_protocols"
            android:title="@string/protocols" />
    </group>
</menu>

标签: androidslidingpanelayout

解决方案


您应该在 XML 文件中创建菜单,然后使用菜单事件处理程序处理事件。这个例子应该对你有所帮助。

主要思想是,当您使用 Android 菜单界面组件时,您可以访问事件处理程序,例如onCreateOptionsMenuonOptionsItemSelected允许您控制 UI 流。


推荐阅读