用户在使用应用时,应该可以很方便的返回到主界面。一个简便的方法就是在除了主界面,所有页面上的应用栏上设置一个返回上级按钮。当用户点击返回按钮时,便可返回到上一级页面。
声明一个父Activity
为了更加方便的支持返回的功能,需要声明一个所有Activity的父类。我们可以在应用的manifest文件中进行处理,在里面设置一个android:parentActivityName
属性。
android:parentActivityName
该属性是在Android 4.1 (API level 16)引入的。同时为了兼容旧版本的android系统,我们还需要定义一个<meta-data>
节点,节点名是"android.support.PARENT_ACTIVITY"
,节点值是这个父类Activity的全量名称。
正如下面的代码所示,应用中有两个Activity,manifest文件分别对它们进行了声明,同时也声明他们之间的关系。
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.MyChildActivity"
android:label="@string/title_activity_child"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
返回按钮的生效
现在,我们可以在每个子Activity的布局中添加ToolBar,并在父Activity中初始化。那么如何添加这个返回按钮呢?在父类Activity中的onCreate()
方法中调用setDisplayHomeAsUpEnabled()
方法即可。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_child);
// my_child_toolbar is defined in the layout file
Toolbar myChildToolbar =
(Toolbar) findViewById(R.id.my_child_toolbar);
setSupportActionBar(myChildToolbar);
// Get a support ActionBar corresponding to this toolbar
ActionBar ab = getSupportActionBar();
// Enable the Up button
ab.setDisplayHomeAsUpEnabled(true);
}
你不需要在onOptionsItemSelected()
方法中关注这个返回按钮的点击事件,它已经让它的父类处理了。