在叙述TabHost的使用之前,我们必须先知道TabActivity的生命周期,以了解主Activity中各个对象的实例化机制。
TabActivity中,只在第一次进入时走了onCreate()、onStart()、onResume()三个阶段,然后在退出该页面时走了onPause()、onStop()和onDestroy()两个阶段。其他时间无论其中的子Activity如何切换,都不会再进入TabActivity的生命周期。
而子Activity,再第一次创建的时候,都会走onCreate()、onStart()、onResume()三个阶段,期间在各子Activity中切换,经历了onPause()和onResume()两个阶段,然后在主TabActivity退出时经历onPause()、onStop()和onDestroy()三个阶段。大致了解下TabActivity生命周期,再次不做细述。
//需要被传递的类
package com.snail.intentobject;
import java.io.Serializable;
/**
* PersonSer
*
* @author http://write.blog.youkuaiyun.com/postedit
*/
public class PersonSer implements Serializable {
/**
* serialVersionUID的作用是在修改实体类后,可以正常的序列化和反序列化,在此不多说,大家可以谷歌百度下。
*/
private static final long serialVersionUID = -7620435178023928252L;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//TabActivity package com.example.lyktimi;
import com.example.music.musicList;
import com.example.music.musicNameList;
import com.example.music.myMusicList;
import com.example.music.netMusicList;
import com.example.server.musicServer;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.RadioButton;
import android.widget.TabHost;
public class MainActivity extends TabActivity {
private TabHost tabHost;
private RadioButton radioButton1;
private RadioButton radioButton2;
private PersonSer personser;//定义传递的对象
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
this.tabHost = getTabHost();
radioButton1 = (RadioButton)findViewById(R.id.rb_tab1);
radioButton2 = (RadioButton)findViewById(R.id.rb_tab2);
radioButton3 = (RadioButton)findViewById(R.id.rb_tab3);
radioButton4 = (RadioButton)findViewById(R.id.rb_tab4);
personSer = new Personser(); personSer.setName("Name1");
Intent bdMusicIntent = new Intent(getApplicationContext(),tab1.class);//激活Activity
// this.tabHost.addTab(this.tabHost.newTabSpec("选项卡1")
.setIndicator("选项卡1")
.setContent(bdMusicIntent));
Intent netMusicIntent = new Intent(getApplicationContext(),tab2.class);//激活Activity
// netMusicIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle netbundle = new Bundle();
netbundle.putString("parameter","parameter");//传递字符串参数
netbundle.putParcelable("personSer", personSer);//传递对象
netMusicIntent.putExtras(netbundle); this.tabHost.addTab(this.tabHost.newTabSpec("选项卡2") .setIndicator("选项卡2")
.setContent(netMusicIntent));
radioButton1.setOnClickListener(new mainRadio());
radioButton2.setOnClickListener(new mainRadio());
}
class mainRadio implements android.view.View.OnClickListener{
public void onClick(View v) {
switch (v.getId()) {
case R.id.rb_tab1:
tabHost.setCurrentTab(0);
break;
case R.id.rb_tab2:
tabHost.setCurrentTab(1);
break;
}
}
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//菜单项事件,每次点击菜单条目时调用
// public boolean onOptionsItemSelected(MenuItem item) {
//
// switch (item.getItemId()) {
// case R.id.findMusic:
// Toast.makeText(getApplicationContext(),"正在查找",Toast.LENGTH_LONG).show();
// getFile(path);
// listInit();
// break;
//
// default:
// break;
// }
// return true;
// }
}
<pre class="java" name="code"><?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/tabhost"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<!-- 这个FrameLayout为TabWidget的内容 id必须写成@android:id/tabcontent的形式 -->
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0.0dip"
android:layout_weight="1.0"
>
</FrameLayout>
<!-- TabWidget这个组件的ID 必须是@android:id/tabs -->
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.0"
android:visibility="gone"
>
</TabWidget>
<!-- android:background="#5f5f5f" -->
<RadioGroup
android:id="@+id/main_radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center_vertical"
android:orientation="horizontal"
>
<RadioButton
style="@style/tab_bottom_style"
android:id="@+id/rb_tab1"
android:checked="true"
android:text="tab1"
android:textSize="12sp"
android:textColor="#ffffff"
android:drawableTop="@drawable/tab_musiclist_selector"
android:button="@null"
/>
<RadioButton
style="@style/tab_bottom_style"
android:id="@+id/rb_tab2"
android:text="tab2"
android:textSize="12sp"
android:textColor="#ffffff"
android:drawableTop="@drawable/tab_mymusiclist_selector"
android:button="@null"
/>
</RadioGroup>
</LinearLayout>
</TabHost>
//drawable文件夹下tab_mymusiclist_selector.xml文件 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/tab_net_press"
android:state_focused="true"
android:state_pressed="false"
/>
<item
android:drawable="@drawable/tab_net_nor"
android:state_enabled="true"
android:state_pressed="true"
/>
<item
android:drawable="@drawable/tab_net_nor"
android:state_checked="true"
android:state_enabled="true"
/>
<item
android:drawable="@drawable/tab_net_press"
/>
</selector>
//选项卡2Activity(tab2)
package com.example.music;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.example.lyktimi.R;
import com.example.server.musicServer;
import com.example.server.sharedPreferences;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class netMusicList extends Activity {
private TextView text;
private PersonSer person;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.net_music_activity);
}
<pre class="java" name="code">/**
* 得到MainActivity传来的对象实例
*/
Intent intent = getIntent();
Bundle bundle = intent.getExtra();
person = (PersonSer)intent.getSerializableExtra("personSer");
String str = bundle.getString("parameter");//取数据
Log.i("TAG",str);
person = intent.getSerializableExtra("personSer");//获得对象
Log.i("TAG",person.getName);//显示对象内容