用户在使用应用时,应该可以很方便的返回到主界面。一个简便的方法就是在除了主界面,所有页面上的应用栏上设置一个返回上级按钮。当用户点击返回按钮时,便可返回到上一级页面。

声明一个父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()方法中关注这个返回按钮的点击事件,它已经让它的父类处理了。

results matching ""

    No results matching ""