且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Android平板电脑开发秘籍》——3.5节技巧:点击应用程序图标后跳转至应用程序首页

更新时间:2022-03-26 04:52:49

本节书摘来自异步社区《Android平板电脑开发秘籍》一书中的第3章,第3.5节技巧:点击应用程序图标后跳转至应用程序首页,作者 【印度】B.M. Harwani,更多章节内容可以访问云栖社区“异步社区”公众号查看

3.5 技巧:点击应用程序图标后跳转至应用程序首页
Android平板电脑开发秘籍
如果用户点击了ActionBar内的Logo或图标,将会跳转至应用程序首页。应用程序首页的意思是应用程序的主Activity,即Activity栈的根成员。

默认情况下,显示在ActionBar中的Logo或图标是不能被点击的。为了让Logo或图标能被点击,必须调用ActionBar的setHomeButtonEnabled()方法,并把Boolean值True传入,如下所示:

actionBar.setHomeButtonEnabled(true);

点击Logo或图标意味着点击了一个菜单项,将由Activity的事件处理方法(Handler)onOptionsItemSelected来处理。当点击Logo或图标时,将被视作点击了ID为android. ``R.id.home的菜单项。换句话说,当点击Logo或者图标时,将会调用onOptionItemSelected()方法,android.R.id.home将作为参数被传入。假设当前Activity是CreateActivity,点击图标后要跳转的主Activity或根Activity为ActionItemsAppActivity,代码清单3-3给出了代码。

代码清单3-3 写入Activity文件CreateActivity.java的代码

package com.androidtablet.actionitemsapp;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
public class CreateActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create);
        ActionBar actionBar = getActionBar();
        actionBar.setHomeButtonEnabled(true);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {       #1
        switch (item.getItemId()) {
            case (android.R.id.home) :
                Intent intent = new Intent(this,
                    ActionItemsAppActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                break;
            default:
                return super.onOptionsItemSelected(item);
        }
        return true;
    }
}

上述代码假定名为create.xml的Layout文件已存在于res/layout文件夹中。为了能跳转到主Activity,使用了一个名为FLAG_ACTIVITY_CLEAR_TOP的Intent标记,用以关闭所有在主Activity之后启动的Activity。在上述代码中可以看到,通过调用getActionBar()方法获得了ActionBar对象actionBar,Boolean值True被传入了setHomeButtonEnabled()方法,这使得应用程序的Logo可被点击了。点击应用程序的Logo,将会在ID为android.R.id.home的菜单项上生成一个点击事件。在事件处理方法onOptionsItemSelected()中,将检查ID为android.R.id.home的菜单项是否被点击了,也即应用程序的Logo是否被点击。如果是应用程序Logo被点击了,将会跳转至应用程序的主Activity ActionItemsAppActivity.class中,跳转操作是通过清除栈顶所有其他Activity(如果存在的话)来实现的。

在Android 4.1以上的版本中,上述代码中语句#1代表的onOptionsItemSelected方法可以整个去掉。也就是说,只要在AndroidManifest.xml文件中加入以下语句,就可以跳转至主Activity中了:

<activity android:name=".CreateActivity" android:label="@string/app_name" 
android:parentActivityName="ActionItemsAppActivity"/>