使用TabHost添加不同tab界面不同的菜单(包含ActionBar)

使用TabHost实现页面切换界面如果要添加菜单选项,只能在

TabHostActivity文件中添加,并且添加了之后所有的页面都会被添加,

如果想要不同页面不同菜单项就需要重绘。

具体如下:

package com.example.test;

import android.app.ActionBar;
import android.app.Activity;
import android.app.ActivityGroup;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;

public class FaceActivity extends ActivityGroup  implements OnTabChangeListener{
    @Override
    public void onCreate(Bundle savedInstanceState){
    	super.onCreate(savedInstanceState); 
    	setContentView(R.layout.tabhost);

    	Drawable drawable=this.getResources().getDrawable(R.drawable.missed_phone);
    	TabHost tabHost=(TabHost)findViewById(R.id.tabhost);
    	//tabHost.setup();
    	tabHost.setup(this.getLocalActivityManager());
    	tabHost.addTab(tabHost.newTabSpec("one").setIndicator(View.inflate(FaceActivity.this,
    			R.layout.tabclass,null))
    			.setContent(new Intent(FaceActivity.this,MainActivity.class)));
    	tabHost.addTab(tabHost.newTabSpec("two").setIndicator("第二页")
    			.setContent(new Intent(FaceActivity.this,PlayerActivity.class)));
    	tabHost.addTab(tabHost.newTabSpec("three").setIndicator("第三页")
    			.setContent(new Intent(FaceActivity.this,JumpActivity.class)));
    	tabHost.setCurrentTab(0);
    	tabHost.setOnTabChangedListener(this);//设置切换页面事件监听
    	/*tabHost.getTabWidget().getChildTabViewAt(0).setOnClickListener(new View.OnClickListener(){
    		@Override
    		public void onClick(View v){
    			showMessage();
    		}
    	});*/
    }
    public void showMessage(){
    	Toast.makeText(this, "999999", Toast.LENGTH_SHORT).show();
    }
    private static boolean showMenu=true;//是否显示Menu标志位
    @Override
    public void onTabChanged(String tabId){//切换事件
    	View tabView=(View)findViewById(R.id.tabcolor);
    	if(tabId.equals("one")){//第一页显示菜单(右上角三个点)
    		tabView.setBackgroundColor(Color.GREEN);
    		showMenu=true;
    		invalidateOptionsMenu();//重新加载菜单项,执行onCreateOptionsMenu
    	}else{//其他页不显示菜单
    		showMenu=false;
    		invalidateOptionsMenu();
    	}
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
	// Inflate the menu; this adds items to the action bar if it is present.
	super.onCreateOptionsMenu(menu);
	Log.i("czktest","onCreateOptionsMenu");
	if(showMenu){
		getMenuInflater().inflate(R.menu.main, menu);
	}
	return true;
    }
    @Override
    public boolean onKeyDown(int keyCode,KeyEvent event){
    	if(keyCode==KeyEvent.KEYCODE_BACK){
    		finish();
    		return true;
    	}else{
    		return super.onKeyDown(keyCode, event);
    	}
    }
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			Toast.makeText(FaceActivity.this, "click settings", Toast.LENGTH_SHORT).show();
		} else if(id == R.id.action_search){
			Toast.makeText(FaceActivity.this, "click search", Toast.LENGTH_SHORT).show();
		}
		return super.onOptionsItemSelected(item);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值