首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android Fragment详解(6):Fragement示例

2012-11-06 
Android Fragment详解(六):Fragement示例把条目添加到动作栏你的fragment们可以向activity的菜单(按Manu键

Android Fragment详解(六):Fragement示例
把条目添加到动作栏

你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完成。

你从fragment添加到菜单的任何条目,都会出现在现有菜单项之后。Fragment之后可以通过方法onOptionsItemSelected()来响应自己的菜单项被选择的事件。

你也可以在fragemnt中注册一个view来提供快捷菜单(上下文菜单)。当用户要打开快捷菜单时,fragment的onCreateContextMenu()方法会被调用。当用户选择其中一项时,fragemnt的onContextItemSelected()方法会被调用。

注:尽管你的fragment可以分别收到它所添加的菜单项的选中事件,但是activity才是第一个接收这些事件的家伙,只有当activity对某个事件置之不理时,fragment才能接收到这个事件,对于菜单和快捷菜单都是这样。


下例中实验了之前所讲的所有内容。此例有一个activity,其含有两个fragment。一个显示莎士比亚剧的播放曲目,另一个显示选中曲目的摘要。此例还演示了如何跟据屏幕大小配置fragment。

MainActivity:

    public static class DetailsActivity extends Activity {                @Override          protected void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);                    if (getResources().getConfiguration().orientation                      == Configuration.ORIENTATION_LANDSCAPE) {                  // If the screen is now in landscape mode, we can show the                  // dialog in-line with the list so we don't need this activity.                  finish();                  return;              }                    if (savedInstanceState == null) {                  // During initial setup, plug in the details fragment.                  DetailsFragment details = new DetailsFragment();                  details.setArguments(getIntent().getExtras());                  getFragmentManager().beginTransaction().add(android.R.id.content, details).commit();              }          }      }  

注意这个activity在检测到是竖屏时会结束自己,于是主activity会接管它并显示出TitlesFragment和DetailsFragment。这可以在用户在竖屏时显示在TitleFragment,但用户旋转了屏幕,使显示变成了横屏。

热点排行