使用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);
}
}