您的应用应该可以让用户轻松找到返回应用主屏幕的方式。 一种简单的方法是在应用栏上为除主要活动之外的所有活动提供“向上”按钮。 当用户选择“向上”按钮时,应用程序将导航到父活动。
本课程向您展示如何通过在清单中声明活动的父级并启用应用栏的“向上”按钮来向活动添加“向上”按钮。
导航架构组件(目前处于alpha状态)是另一种处理应用程序导航的方法。 当用户点击向上按钮时,API可以处理从您应用中的当前屏幕向上导航。 要了解更多信息,请参阅导航架构组件。
一、声明父活动
要支持活动中的向上功能,您需要声明活动的父级。 您可以通过设置android:parentActivityName
属性在应用程序清单中执行此操作。
android:parentActivityName
属性是在Android 4.1
(API级别16)中引入的。 要支持使用旧版Android的设备,请定义<meta-data>
名称 - 值对,其名称为“android.support.PARENT_ACTIVITY”
,值为父活动的名称。
例如,假设您的应用具有名为MainActivity的主要活动和单个子活动。 以下清单代码声明了这两个活动,并指定了父/子关系:
<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>
二、启用向上按钮
要为具有父活动的活动启用“向上”按钮,请调用应用栏的setDisplayHomeAsUpEnabled()
方法。 通常,您会在创建活动时执行此操作。 例如,以下onCreate()
方法将工具栏设置为MyChildActivity
的应用栏,然后启用该应用栏的“向上”按钮:
@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()
方法中捕获up动作。 相反,该方法应调用其超类,如响应操作中所示。 超类方法通过导航到父活动响应Up选项,如应用清单中指定的那样。
网友评论