我目前在Android項目中,我們的主視圖是TabActivity,每個選項卡都是單獨的Activity。一個是MapActivity,另外兩個是普通的活動。對TabHost中的其他活動執行火警操作嗎? (Android)
首先要注意的是,我認爲我們必須將每個選項卡作爲單獨的活動,因爲單獨的活動中有太多的代碼只是讓TabHost切換選項卡上的內容視圖並使所有代碼相同類。無論如何,回到問題。
其中一個選項卡包含一個按鈕,當按下該按鈕時,應使TabActivity切換到MapActivity並將地圖動畫化到特定位置。
在http://joshclemm.com/blog/?p=86上找到的教程顯示瞭如果TabHost包含mapview和listview,該如何做到這一點。如果單擊ListView中的項目,TabHost將切換到地圖視圖併爲該位置(這些座標)添加動畫。這正是我在按下單獨活動中的按鈕時需要做的事情。
的MainView.java創建如下:
public class MainView extends TabActivity implements OnTabChangeListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
intent = new Intent().setClass(this, MapGUI.class);
spec = tabHost.newTabSpec("map").setIndicator("Map",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, MissionView.class);
spec = tabHost.newTabSpec("mission").setIndicator("Mission",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, SIPView.class);
spec = tabHost.newTabSpec("call").setIndicator("Call",
res.getDrawable(R.drawable.ic_tab_menu_item))
.setContent(intent);
tabHost.addTab(spec);
的MissionView.java如下:
public class MissionView extends Activity implements Observer{
MissionController mc;
private TextView missionheader, missiondescription, missionaddress,
missiontime, missioninjuries;
private Button changedesc, gotoadress;
private String[] mission;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.missiontablayout);
missionheader = (TextView)findViewById(R.id.missionheader2);
missiondescription = (TextView)findViewById(R.id.missiondescription2);
missionaddress = (TextView)findViewById(R.id.missionaddress2);
missiontime = (TextView)findViewById(R.id.missiontime2);
missioninjuries = (TextView)findViewById(R.id.missioninjuries2);
changedesc = (Button)findViewById(R.id.gotoaddress);
changedesc.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// DO SOMETHING HERE?
}
});
mc = new MissionController(MissionView.this);
}
public void update(Observable observable, Object data) {
if(data instanceof String[]){
mission = (String[]) data;
updateView(mission);
}
}
public void updateView(String[] missiontext){
missionheader.setText(missiontext[0]);
missiondescription.setText(missiontext[1]);
missionaddress.setText(missiontext[2]);
missiontime.setText(missiontext[3]);
missioninjuries.setText(missiontext[4]);
}
}
有誰知道我能做到這一點?
請注意,上面提供的代碼沒有實際繪製到實際位置的實現,但問題仍然存在,如何在一個活動中按下按鈕以切換TabHost中的選項卡並在該選項卡上觸發更改活動?