Android UI开发详解之ActionBar(3)

六、ActionBar的单击事件

1、ActionBar中一个菜单项(即Action item)的触发像以前版本中的活动菜单回调方法(onOptionsItemSelected())一样。

2、当用户选择一个Fragment的菜单项时,首先会调用Activity的onOptionsItemSelected()方法,如果该方法返回false,则调用Fragment实现的onOptionsItemSelected()方法。

public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  switch (item.getItemId()) {
  case R.id.menu_save:
   Toast.makeText(getApplicationContext(), "menu_save", 0).show();
   break;
  case Android.R.id.home:
   Intent intent = new Intent(this, MainActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
     | Intent.FLAG_ACTIVITY_NEW_TASK);
   startActivity(intent);
   Toast.makeText(getApplicationContext(), "android.R.id.home", 0)
     .show();
   break;
  default:
   break;
  }
  return super.onOptionsItemSelected(item);
 }

七、应用的图标

1、默认情况下,应用图标在ActionBar的左侧
2、当用户点击应用bar的时候,系统会调用你的Activity里面的onOptionsItemSelected() 方法里面的Android.R.id.Home ID(你的主ID)里定义的事件。我们可以重写这个方法,添加一个条件执行该行为:让它跳转到这个应用的主Activity而不是返回的主屏幕。
3、如果选择返回应用的主activity,最好的方式是在创建的Intent中添加FLAG_ACTIVITY_CLEAR_TOP这个标签。
使用这个FLAG_ACTIVITY_CLEAR_TOP标签,如果应用的主Activity已经在activity栈中存在,所有在其上的activity都会被销毁,然后主activity会到栈顶,而不用创建主Activity的的新实例。

@Override
 public boolean onOptionsItemSelected(MenuItem item)
 {
  switch (item.getItemId())
  {
  case android.R.id.home:
   Intent intent = new Intent(this, MainActivity.class);
   intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   startActivity(intent);
   return true;
  default:
   return super.onOptionsItemSelected(item);
  }
 }

当我们想实现用户点击ActionBar 图标后返回前一个activity,可以通过在Actionbar设置setDisplayHomeAsUpEnabled(true) 来实现。如图:

Android UI开发详解之ActionBar

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1c11da2f967898e41b2f0f48714bbf70.html