我一直在寻找几个小时,但我无法完成这项工作:
我有 2 个片段,我在操作栏中的每个片段中添加了一个不同的菜单项。
如您所见,它正在工作,但我想要的是一个项目留在他的片段“框架”中(但仍在操作栏中)这些项目应该分开并保持在它们自己的片段之上,如下图所示。
我读过我需要在每个片段的 onCreate() 方法中调用 setHasOptionsMenu ,但它仍然无法按我的意愿工作。
这是我的代码:
MainActivity(托管我的 2 个片段)
public class MainActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Frag1 f1 = new Frag1();
Frag2 f2 = new Frag2();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.frag1, f1);
ft.replace(R.id.frag2, f2);
ft.commit();
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:id="@+id/frag1"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1"
>
</LinearLayout>
<LinearLayout
android:id="@+id/frag2"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_weight="1"
>
</LinearLayout>
</LinearLayout>
Frag1.java
public class Frag1 extends SherlockFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.frag_content, container, false);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.add(0, 12, 1, "Frag 1").setTitle("MENU ITEM 1").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
Frag2.java
public class Frag2 extends SherlockFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.frag_content2, container, false);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.add(5, 15, 101, "Frag 2").setTitle("MENU ITEM 2").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
片段的布局是包含 TextView 的简单 LinearLayout
有人可以指点我正确的解决方案吗?