启用程序图标导航

    为了将应用程序图标转变为可以点击的图标,可以调用ActionBar的如下方法。

  • setDisplayHomeAsUpEnabled(boolean showHomeAsUp):设置是否将应用程序图标转变为可点击的图标,并在图标上添加一个向左的箭头。
  • setDisplayOptions(int options):通过传入int类型常量来控制该ActionBar的显示选项。
  • setDisplayShowHomeEnabled(boolean showHome):设置是否显示应用程序的图标。
  • setHomeButtonEnable(boolean enabled):设置是否将应用程序图标转变成可点击的按钮。

    下面的程序将该Activity的程序图标转变成可点击的图标,并控制用于单击该图标时直接返回程序的主Activity。该程序的界面布局文件如下:

  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
  >
    <TextView
        android:id="@+id/txt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="15pt"
        android:text="可通过应用程序图标返回主Activity" />
</LinearLayout>

后台代码文件如下:

package org.crazyit.helloworld;

import android.os.Bundle;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;

public class ActionHomeTest extends Activity {
    
    private TextView txt;
    ActionBar actionBar;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.action_home_test);
        txt=(TextView)findViewById(R.id.txt);
        actionBar=getActionBar();
        //设置是否显示应用程序图标
        actionBar.setDisplayShowHomeEnabled(false);
        //将应用程序图标设置为可点击的按钮
        actionBar.setHomeButtonEnabled(true);
        //将应用程序图标设置为可点击的按钮,并在图标上添加左箭头
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflator=new MenuInflater(this);
        //状态R.menu.context对应的菜单,并添加到menu中
        inflator.inflate(R.menu.my_menu, menu);
        
        // Inflate the menu; this adds items to the action bar if it is present.
        //getMenuInflater().inflate(R.menu.action_home_test, menu);
        //return true;
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem mi) {
        if(mi.isCheckable())
        {
            mi.setCheckable(true);//
        }
        //判断单击的是哪个菜单项,并有针对性地作出响应
        switch(mi.getItemId())
        {
        case android.R.id.home:
            //创建启动ViewFlipperTest的Intent
            Intent intent=new Intent(this,ViewFlipperTest.class);
            //添加额外的Flag,将Activity栈中处于DialogTheme之上的Activity弹出
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            //启动intent对应的Activity
            startActivity(intent);
            break;
        
        
        
        }
        
        return true;
        
        // TODO Auto-generated method stub
        //return super.onOptionsItemSelected(item);
    }

}

   上面的程序中前两行粗体字代码的任意一行都可将ActionBar上的应用程序图标转换为可点击的图标。接下来程序为点击事件绑定了事件监听器,当用户单击ID为android.id.home的Action Item时(应用程序图标的ID)时,程序使用Intent返回了应用程序主Activity,如上面的第二段粗体字代码所示。

运行上面的程序将看到如下效果:

posted @ 2013-10-31 20:45  TealerProg  Views(530)  Comments(0Edit  收藏  举报