处理双窗格片段中的菜单

时间:2013-05-15 09:31:47

标签: android android-layout android-fragments android-menu

我有一个像下面这样的片段布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" 
android:baselineAligned="false">

<fragment
    android:id="@+id/callsListFragment"
    android:layout_width="0dp"
    android:layout_weight="1.5"
    android:layout_height="match_parent"
    class="com.example.MyCallsListFragment" />

<fragment
    android:id="@+id/callDetailFragment"
    android:layout_width="0dp"
    android:layout_weight="2"
    android:layout_height="match_parent"
    class="com.example.MyCallsDetailsFragment" />

</LinearLayout> 

第一个片段显示所有调用的列表,第二个片段显示其详细信息。他们每个人都有一个单独的菜单选项。

Say callsListFragment有两个菜单项,例如

View outstanding calls
Calls for today

callDetailFragment有三个菜单项,例如

Edit call
Add new call
Archive call

我从相应的片段中扩充这些菜单。

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

但是,在双窗格中,我看到所有五个菜单项都相当矛盾,因为很难找到哪个菜单项。

这是显示菜单项的方法吗?你能指导我做正确的做法吗?

该应用程序将支持平板电脑和手机。

1 个答案:

答案 0 :(得分:0)

创建选项菜单时,检查是两种窗格模式。

boolean mTwoPane = // isTwoPane ?

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
   if (mTwoPane) return; // if (!mTwoPane) return;
   inflater.inflate(R.menu.menu_mycalls, menu);
}

或者,为两个窗格模式创建新菜单。 (使资源文件夹像“menu-land”)