2011-11-11 43 views
5

我目前在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中的選項卡並在該選項卡上觸發更改活動?

回答

0

放在按鈕下方一行單擊要切換到地圖活動

((MainView) getParent()).setTabMap(); 

和的MainView創建下面的函數

public void setTabMap() 
{ 
    //as Map activity is your first tab so pass 0 as index 
    getTabHost().setCurrentTab(0); 
}